【问题标题】:jQuery keyup event does not set event.shiftKeyjQuery keyup 事件未设置 event.shiftKey
【发布时间】:2014-03-07 22:16:14
【问题描述】:

我正在尝试使用 jQuery 监听 shift 键再次被按下和释放。

见 JSFiddle here

$(document).bind('keydown', function (event) {
    if (event.shiftKey) {
        document.body.innerHTML += 'shift down<br>';
    }
});
$(document).bind('keyup', function (event) {
    if (event.shiftKey) {
        document.body.innerHTML += 'shift up<br>';
    }
});

keyup/keydown 事件似乎通常被正确调用。但是,如果 shift 是唯一被按下的按钮,则 event.shiftKey 仅设置为 keyDOWN 事件,而不是 keyUP 事件。您可以在 JSFiddle 中看到在这种情况下永远不会打印“key up”消息。但是,如果我按 shift + 其他东西(例如 Ctrl),一切都会正常运行。

这是 jQuery 中的错误吗?有什么解决方法吗?

【问题讨论】:

  • event.shiftKey 表示 shift 键按下,如果松开 shift 键后仍为 true 就没有多大意义了?
  • 啊,我假设 .shiftKey 的意思是“这个事件与 shift 键相关联”。如果它实际上意味着“钥匙现在已经关闭”,那么这确实是有道理的。谢谢!
  • 是的,表示shift键当前是否向下,以区分shift+key组合。

标签: javascript jquery


【解决方案1】:

使用它 $(document).bind('keyup keydown', function(e){shifted = e.shiftKey} );

【讨论】:

    【解决方案2】:

    试试this

    $(document).bind('keydown', function (event) {
        if (event.keyCode == 16) {
            document.body.innerHTML += 'shift down<br>';
        }
    });
    $(document).bind('keyup', function (event) {
        if (event.keyCode == 16) {
            document.body.innerHTML += 'shift up<br>';
        }
    });
    

    检查键码有效.. 但 event.shiftkey 似乎在 keyup 中不起作用

    【讨论】:

      【解决方案3】:

      e.shiftKey 有错误,我试过了。不起作用(我的猜测可能是在较旧的实例上) 而 e.which === 16 工作得很好。

                self.on("keyup", ""+id, function(e) {
                      if (e.which === 16) {
                          console.log(e.which);
                          // Your Code :)
                      }
                }
      

      【讨论】:

        【解决方案4】:

        正如 ardeneo 在他的评论中提到的,我误解了 .shiftKey 属性。正确的方法似乎是同时听 keyup 和 keydown ,然后只检查 event.shiftKey 以查看它是否被按下或解除。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-10-14
          • 2016-01-14
          相关资源
          最近更新 更多