jQuery .keypress()可以同时检测多个密钥吗?

Chr*_*ams 45 javascript jquery

有没有办法让jQuery检测到同时按下了多个键?

是否有任何替代方案可以同时按下两个键进行检测?

Dav*_*ang 76

要检测按下的多个键,请使用keydownkeyup事件.

var keys = {};

$(document).keydown(function (e) {
    keys[e.which] = true;
});

$(document).keyup(function (e) {
    delete keys[e.which];
});
Run Code Online (Sandbox Code Playgroud)

我在这里放了一个演示:http://jsfiddle.net/gFcuU/.这很有趣,虽然我注意到我的键盘最多只能检测到6个键.

  • 请参阅:http://jsfiddle.net/gFcuU/524/ - 尝试按CTRL + C一些文本.之后,"按键"将保持为1,直到你单独按下/释放CTRL和C. 我们怎能避免这种情况? (2认同)

jAn*_*ndy 54

这取决于.对于"正常"的钥匙,这意味着非Shift,Ctrl,ALT,( CMD),答案是否定的,该事件处理程序将赶上/火在队列中,一个接一个.

对于我上面提到的修饰键,事件对象上有一个属性.

例:

$(document).bind('keypress', function(event) {
    if( event.which === 65 && event.shiftKey ) {
        alert('you pressed SHIFT+A');
    }
});
Run Code Online (Sandbox Code Playgroud)

Jsfiddle演示.

其他财产是:

  • event.ctrlKey
  • event.altKey
  • event.metaKey