按键事件在IE和Chrome中无效,但在FF中工作

时间:2011-06-10 19:40:06

标签: jquery internet-explorer firefox google-chrome keypress

知道为什么会这样吗?我通常会认为Chrome会对代码更宽容吗?

$(document).keypress(function(e) {
    if(e.keyCode == 39) rightImage();
    if(e.keyCode == 37) leftImage();
});

这就是我的按键显示的样子。我错过了什么吗?右图();和leftImage();是因为我在其他地方也使用这些功能而应该起作用的功能

感谢您的帮助!

3 个答案:

答案 0 :(得分:37)

keypress更改为keydown

$(document).keydown(function(e) {
    if(e.keyCode == 39) rightImage();
    if(e.keyCode == 37) leftImage();
});

按下键时会发生keydown事件,紧接着是按下按键事件。然后在释放密钥时生成keyup事件。

  

为了理解keydown和keypress之间的区别,它   有助于理解“字符”和“字符”之间的区别   “键”。 “键”是计算机键盘上的物理按钮,而a   “字符”是通过按下按钮键入的符号。在理论上,   keydown和keyup事件表示按下或释放的键,   而keypress事件表示正在键入的字符。该   所有浏览器的理论实现都不相同。

答案 1 :(得分:2)

在这里找到答案:http://api.jquery.com/keypress/

“如果你想在Chrome中使用箭头,删除,退格键,你必须使用keydown。这些键上的keypress仅适用于Firefox和Opera。”

您的代码在iE8(在FF中工作)对我不起作用,所以我将按键切换到了keydown。现在在IE中工作。这里没有Chrome测试。

答案 2 :(得分:0)

是的,可以通过将onkeypress事件更改为onkeydown来实现。此外,仅当您要在空间单击上触发事件的Internet Explorer时,此问题才存在。