【发布时间】: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