按住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
答案 0 :(得分:0)
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年。