Javascript jQuery向上键/向下键按键检测不工作?
在以下代码中:Javascript jQuery向上键/向下键按键检测不工作?,javascript,jquery,Javascript,Jquery,在以下代码中: $(document).keypress(function(e) { var code = (e.keyCode ? e.keyCode : e.which); if (code == 40) { alert("down pressed"); } else if (code == 38) { alert("up pressed"); } }); 我试图检测是否
$(document).keypress(function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 40) {
alert("down pressed");
} else if (code == 38) {
alert("up pressed");
}
});
我试图检测是否按下了向下键或向上键。为什么不起作用
小提琴
我在chrome中使用keydown而不是keypress,一些浏览器在按下“特殊键(如箭头)”时不会触发keypressjQuery的
keypress
方法不是很稳定。改为在('keydown')上使用
请参阅:on('keyup')在IE中不起作用。至少在第9版中不起作用。下面是固定版本javascript代码的
事件没有触发。如果我将
keypress
更改为keydown
或keydup
(如果我删除那些self.gotIt()
和self.forgotIt()
),它就会工作。我强烈建议您无论如何使用keyup
或keydown
,即使您没有这个问题。。。它好多了,而且一切都是可以预测的keydown
也应该替换keypress
。您可能无法正常工作,但要使其正常工作,您需要关注元素。因此,单击右下角的框将使脚本在JSFIDLE上工作。jQuery quote:“keypress事件处理程序可以附加到任何元素,但事件只发送到具有焦点的元素。”@Michael您使用的浏览器是什么?这在Chrome中对我不起作用。我认为keypress
更像是一个IE的东西。是的,根据jQuery网站:注意:由于keypress事件不在任何官方规范的范围内,因此使用它时遇到的实际行为可能因浏览器、浏览器版本和平台而异。请小心使用keypress来检测特殊键。在某些平台上,它只会发射一次,在其他平台上会重复发射。试试这个:在你的网络浏览器和平台上,看看按住Ctrl键的频率。在OEL6.x上,它会触发一次。在Windows7上,它会重复启动。
$(document).on('keydown',function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
switch (code){
case 34:
alert("Page down pressed");
break;
case 33:
alert("Page up pressed");
break;
case 40:
alert("Down pressed");
break;
case 38:
alert("Up pressed");
break;
case 37:
alert("Left pressed");
break;
case 39:
alert("Right pressed");
break;
}