我试图在我的应用程序中捕获某些按键事件,但前提是没有同时按下“控制”键。我不想遇到屏幕阅读器键盘快捷方式的问题。 Shift
、Ctrl
和 Alt
很容易检查,因为它们在 javascript 事件中,但我还需要检查 Ins
和 Windows
键以及任何 Mac 控制键。
这是我到目前为止所得到的,它按预期工作,但当 Ins
或 Windows
被按住时,我的事件仍然被触发。
handleKeydown: function(event) {
var comboKeyPressed = event.ctrlKey || event.shiftKey || event.altKey;
if(!comboKeyPressed && event.keyCode === $.ui.keyCode.HOME) {
event.preventDefault();
this.$('>ul>li:last').attr('tabindex', -1);
this.$('>ul>li:first').attr('tabindex', 0).focus();
} else if (!comboKeyPressed && event.keyCode === $.ui.keyCode.END) {
event.preventDefault();
this.$('>ul>li:first').attr('tabindex', -1);
this.$('>ul>li:last').attr('tabindex', 0).focus();
}
}
有没有一种方法可以轻松检查其他控制键,或者我是否需要捕获这些事件并在某些全局 bool 值(如 this.isInsertPressed
)中保留它们?
最佳答案
你可以这样做:
var keysPressed = {};
var keys = { insert: 45 };
$(window).keydown(function(e) { keysPressed[e.which] = true; });
$(window).keyup(function(e) { keysPressed[e.which] = false; });
然后:
if (keysPressed[keys.insert]) {
// insert key is currently down
}
关于javascript - 如何判断插入键是否被按住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18005422/