Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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

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
Javascript jQuery keypress()事件未触发?_Javascript_Jquery_Internet Explorer - Fatal编程技术网

Javascript jQuery keypress()事件未触发?

Javascript jQuery keypress()事件未触发?,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,我试图用jQuery在按下左右箭头键时触发一个事件。使用以下代码,我可以在任何字母数字键上触发事件,但光标键(上、下、左、右)不会触发任何事件。我主要为IE用户开发这个网站,因为它是一个商业应用程序。我做错什么了吗 $('document').keypress(function(e){ switch (e.which) { case 40: alert('down'); break; case 38:

我试图用jQuery在按下左右箭头键时触发一个事件。使用以下代码,我可以在任何字母数字键上触发事件,但光标键(上、下、左、右)不会触发任何事件。我主要为IE用户开发这个网站,因为它是一个商业应用程序。我做错什么了吗

$('document').keypress(function(e){
    switch (e.which) {
        case 40:
            alert('down');
            break;
        case 38:
            alert('up');
            break;
        case 37:
            alert('left');
            break;
        case 39:
            alert('right');
            break;
        default:
            alert('???');  
            }      
});

e.which在IE中不起作用请尝试e.keyCode,如果您的目标是IE,您可能还想使用keydown()而不是keypress()

有关更多信息,请参阅。

使用jQuery,我完成了以下工作:

此外,请尝试这些插件,它们似乎可以为您完成所有工作:


您有一个字符串中的单词“document”。更改:

$('document').keypress(function(e){


当然,这是一个封闭的问题,我想补充一些你们的讨论

在mozilla中,我观察到这段代码有一种奇怪的行为

$(document).keydown(function(){
//my code 
});
代码被触发两次。调试时,我发现实际上有两个事件被触发:“keypress”和“keydown”。我禁用了其中一个事件,代码向我显示了预期的行为

$(document).unbind('keypress');
$(document).keydown(function(){
//my code
});
这适用于所有浏览器,并且不需要检查特定于浏览器的(如果($.browser.mozilla){})


希望这对某人有用

您的原始代码有$('document')。。。当它应该有$(document)而没有引号时。

我仍然得到相同的结果。字母数字键都会触发默认大小写,但箭头键不会触发任何内容,甚至不会触发默认大小写。不管出于什么原因,我认为keypress()的主要事件没有触发。很好的回答对我帮助很大
keyup()
适用于使用jQuery 2.1.0的IE11的IE10文档模式。
keydown
keypress
并不等效。你暗示它们是可互换的,而事实并非如此。这个软件相当于“如果你像这样举起手臂时感到疼痛,那么不要像这样举起手臂”哇;大量的搜索,这是我发现的唯一一个关于浏览器对按键/向下键支持的区别的回答。关于按键和向下键的行取决于浏览器是至关重要的。当前的jQuery文档说“修改器和非打印键,如Shift、Esc和delete触发器按键事件,但不包括按键事件”这意味着keypress()不适用于箭头键,而应使用keydown()。
$(document).keydown(function(){
//my code 
});
$(document).unbind('keypress');
$(document).keydown(function(){
//my code
});