【问题标题】:Reversing arrow key presses using jQuery使用 jQuery 反转箭头键按下
【发布时间】:2012-09-30 18:34:14
【问题描述】:

我正在使用以下 css 来反转文本区域:

.reverse
{
  /* reverse the text */
  transform: scale(-1, 1);
  -webkit-transform: scale(-1, 1);
  -moz-transform: scale(-1, 1); 
  -o-transform: scale(-1, 1); 
  transform: scale(-1, 1);
}

这很好用,除了一件事:使用箭头键浏览文本现在是向后的。我想反转箭头键的方向,以便它们按预期工作。这是我尝试过的:

$(document).ready(function() {

  // flag which indicates when the key event has been overridden
  var keyEventOverridden = false;

  // reverse the arrow keys for the reverse textbox
  $(".reverse").bind("keydown keyup", function(event) {

    // allow the default behavior if the key has already been overridden
    if (keyEventOverridden)
      return true;

    // get the keyCode
    var keyCode = event.keyCode || event.which;

    // create the replacement event
    var replacementEvent = $.Event(event.type);

    // trigger the right key if the left key was pressed down
    if (keyCode === 37)
    {
      replacementEvent.keyCode = 39;
      replacementEvent.which = 39;
    }
    // trigger the left key if the right key was pressed down
    else if (keyCode === 39)
    {
      replacementEvent.keyCode = 37;
      replacementEvent.which = 37;
    }
    else
    {
      // allow the default behavior
      return true;
    }

    // prevent the key event from being overridden again
    keyEventOverridden = true;

    // trigger the replacement event
    $(this).trigger(replacementEvent);

    // allow the key event to be overridden again
    keyEventOverridden = false;

    // prevent the default behavior
    return false;
  });
});

这个脚本不起作用。有人知道为什么吗?

【问题讨论】:

  • 可能是个小提琴,所以我们可以调试?
  • 调试它看看能不能做点什么...
  • 感谢您发布小提琴@TJ。我对其进行了一些外观更改。
  • 无法让它按照您最初设计的方式工作。已发布替代解决方案。
  • @helixed 你可能想发布更新的小提琴。小提琴上的“更新”分叉它。原版不会改变 AFAIK

标签: javascript jquery


【解决方案1】:

好吧,无法让它按照您最初设计的方式工作(即通过触发伪事件),浏览器只是不允许操纵事件。

我做了一个可能对你有用的解决方法。

查看演示http://jsfiddle.net/pL3Yj/6/

解决方案涉及覆盖左/右箭头并自己移动插入符号。

【讨论】:

  • 很棒的答案。感谢您的帮助!
  • 我写了一个 jQuery 插件来简化插入符号的移动。 github.com/LandonSchropp/caret
  • +1 对于插件。长期需要跨浏览器测试的解决方案。
  • 它可以使用更彻底的测试。如果您使用它,请随时告诉我它是如何工作的。 :)
猜你喜欢
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 2013-07-22
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
相关资源
最近更新 更多