jquery keyup持有移位和数字键盘

时间:2015-01-12 15:46:09

标签: jquery shift keyup

按住shift键时,我没有为某些数字键盘键输入正确的代码。当num-lock键打开时,仅对数字键盘上的数字键和point / del键发生这种情况。

$('body').keyup(function (e) {

            alert('key code ' + e.keyCode + '  ewhich: ' + e.which);
});

使用num-lock ON:

Shift + numberPad1输出代码16,键盘和点/ del键上的所有数字键都是如此。

对此有何解释?

使用CHROME

3 个答案:

答案 0 :(得分:0)

当您按下shift + numpad1时,

KeyUp事件将触发,这意味着当你按下shift + numpad1时,shift会在最后一次触发,这就是你获得16个代码的原因。

使用能够为您提供准确结果的Keydown事件。 你想跟踪shift +键代码,然后你必须单独移动键移位键

经验 -

  

$(document).ready(function(){

    $("body").keydown(function (e) {

        console.log('key code ' + e.keyCode + '  ewhich: ' + e.which);

    });

});

答案 1 :(得分:0)

我在这里测试。在这种情况下,可能在键盘上传递了两次,一个用于你想要的键,另一个用于移位。 尝试忽略代码16,它将正常工作。

$('body').keyup(function (e) {
  if(!e.keyCode == 16)
    console.log('key code ' + e.keyCode + ' shiftKey' + e.shiftKey);
});

或尝试使用按键

$('body').keypress(function (e) {
  console.log('key code ' + e.keyCode + ' shiftKey' + e.shiftKey);
});

答案 2 :(得分:0)

在Windows PC上,由于Shift键暂时覆盖了“ Numlock = ON”状态,因此Shift +数字键(0-9)具有不同的功能。例如Shift + Numpad1将注册为“结束”并释放Shift键。在Windows上使用同一应用程序时,尝试使用与我在Mac上使用的应用程序分配的快捷方式相同,这使我头痛了2.5年。