我试图在我的应用程序中捕获某些keydown事件,但前提是同时没有按下“控制”键.我不想遇到屏幕阅读器键盘快捷方式的问题. 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();
}
}
有没有办法轻松检查其他控制键,还是我需要捕获这些事件并在某些全局布尔值中保留它们,如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
}