如何判断插入键是否被按下

ele*_*y19 5 javascript jquery events keydown

我试图在我的应用程序中捕获某些keydown事件,但前提是同时没有按下"控制"键.我不想遇到屏幕阅读器键盘快捷方式的问题.Shift,Ctrl并且Alt很容易检查因为它们是在javascript事件上,但我还需要检查InsWindows键以及任何Mac控制键.

这是我这么远,它工作正常,但是当仍然触发了我的事件InsWindows按住.

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();

  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法轻松检查其他控制键,或者我是否需要捕获这些事件并在某些全局布尔值中保留它们this.isInsertPressed

Jas*_*n P 3

你可以这样做:

var keysPressed = {};
var keys = { insert: 45 };    
$(window).keydown(function(e) { keysPressed[e.which] = true; });
$(window).keyup(function(e) { keysPressed[e.which] = false; });
Run Code Online (Sandbox Code Playgroud)

然后后来:

if (keysPressed[keys.insert]) {
    // insert key is currently down
}
Run Code Online (Sandbox Code Playgroud)