Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
Javascript jQuery向上键/向下键按键检测不工作?_Javascript_Jquery - Fatal编程技术网

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,一些浏览器在按下“特殊键(如箭头)”时不会触发keypress

jQuery的
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;
        }