在jQuery中组合键码事件

时间:2011-11-01 03:04:30

标签: jquery keyboard keyboard-events keycode

我正在jQuery中构建一个虚拟键盘,使用键码事件来触发追加,但是键码组合让我陷入了循环。这是一个例子:

我只想在同时按下SHIFT键(键码16)和斜杠键(键码191)时附加问号。我想&&运算符会有所帮助,但这只会附加斜杠:

$(document).keydown(function(e) { 

    if (e.keyCode == 16 && e.keyCode == 188  ) { 
         $('#mydiv').append('<span>?</span>');
     }

});

任何建议或想法为什么&amp;&amp;不起作用,可能有用吗?谢谢!

3 个答案:

答案 0 :(得分:4)

检查e.keyCode == 16 && e.keyCode == 188将无效,因为e.keyCode不会同时为16和188。 &&运算符是逻辑连接,因此如果它的两边的表达式都为真,则计算结果为true。

我想你想看e.shiftKey;如果这是真的那么 Shift 键是关闭的,如果e.shiftKey为假,则 Shift 不会关闭:

if(e.shiftKey && e.keyCode == 191) {
    // ?
}
else if(!e.shiftKey && e.keyCode == 191) {
    // /
}

答案 1 :(得分:0)

因为每个键都创建了自己的keydown事件,所以keyCode永远不可能等于16和188。

幸运的是,SHIFT状态存储在event.shiftKey:)

答案 2 :(得分:0)

试试这个

$(document).keydown(function(e) {
  if (e.shiftKey){
     if (e.which == 188) { 
         alert('both');
     }

  }
});