Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery keypup保持shift键和数字键盘键_Jquery_Shift_Keyup - Fatal编程技术网

jquery keypup保持shift键和数字键盘键

jquery keypup保持shift键和数字键盘键,jquery,shift,keyup,Jquery,Shift,Keyup,按住shift键时,某些数字键盘键的代码不正确。仅当num lock(数字锁定)键处于启用状态时,数字键盘上的数字键和点/删除键才会出现这种情况 $('body').keyup(function (e) { alert('key code ' + e.keyCode + ' ewhich: ' + e.which); }); 打开num lock时: Shift+numberPad1输出代码16,键盘上的所有数字键和point/del键也是如此 对此有何解释 使用C

按住shift键时,某些数字键盘键的代码不正确。仅当num lock(数字锁定)键处于启用状态时,数字键盘上的数字键和点/删除键才会出现这种情况

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

            alert('key code ' + e.keyCode + '  ewhich: ' + e.which);
});
打开num lock时:

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

对此有何解释


使用CHROME时,当您按最后一个键时,将触发KeyUp事件,这意味着当您按shift+numpad1时,shift ket在最后一个键时启动,这就是您获得16个代码的原因

使用Keydown事件将为您提供准确的结果。 如果要跟踪shift+键代码,则必须单独处理shift键

经验-

$(文档).ready(函数(){


我在这里测试。在这种情况下,可能是通过了两次按键,一次是为了你想要的按键,另一次是为了转换。 试着忽略代码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);
});

在Windows PC上,由于Shift键临时覆盖“Numlock=On”状态,Shift+Numpad(0-9)具有不同的功能。例如,Shift+Numpad1将注册为“End”然后释放Shift键。这一直是我2.5年来最头疼的问题,因为当我在Windows上使用相同的应用程序时,我试图使用我在Mac上为应用程序分配的相同快捷方式。

16是
Shift
code;你正在使用哪个浏览器?我正在ChromeThanks上测试你的答案。Shift键一直按下,而不是向上,上升的是numpad键。这很奇怪,因为执行相同的操作(按住shift键)并尝试numpad以外的任何键都会返回另一个键的代码,而不是shift代码(16)。我不能忽略那些代码16,因为当keyup获得代码16时,我调用一个操作。这就是我所做的:按下shift键时,我读取输入的数字键,通过串联输入的所有数字来生成一个数字,然后在释放shift键时,我调用一个操作,使用该数字作为函数的参数。我正在实现一个快捷键t功能。谢谢你的回答。事实上,我不能忽略shift键,因为我需要它来提交操作。这就是我正在做的:按下shift键时,我读取输入的数字键,通过连接输入的所有数字来生成一个数字,然后在释放shift键时,我调用一个操作,使用该数字作为argu我正在实现一个快捷键功能。所以我不明白你的问题是什么。在这里,使用keyup总是会触发两次事件,一次用于按键,另一次用于移位。请注意,numpad的数字与普通键盘的代码不同。
$('body').keypress(function (e) {
  console.log('key code ' + e.keyCode + ' shiftKey' + e.shiftKey);
});