2011-06-10 123 views
14

任何想法为什么会发生这种情况?我通常会认为Chrome会更加宽容代码?按键事件不适用于IE和Chrome,但在FF工作

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

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

感谢您的帮助!

+0

对我来说,你的键码39是 - >'(引号) – 2011-06-10 19:54:02

+0

选中这个:http://jsfiddle.net/LmXaW/10/ – 2011-06-10 19:57:22

+0

@RicardoArruda它使用keydown事件而不是按键。 – Foreever 2014-02-20 10:42:34

回答

30

变化keypress到​​:

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

当按键被按下时发生keydown事件,由所述按键事件紧接着。然后在释放密钥时生成密钥事件。

为了理解KeyDown和按键之间的差,它 有助于了解“字符”和 “密钥”之间的差异。 “键”是计算机键盘上的物理按钮,而“字符”是通过按下按钮键入的符号。从理论上讲,keyyd事件和keyup事件代表被按下或释放的键,而keypress事件则表示键入的字符。理论的实现在所有浏览器中都不相同。

+0

谢谢你们!耶keydown工程!也感谢您的解释! – hellomello 2011-06-10 20:01:50

+0

谢谢...... :) – 2014-02-14 15:21:51

+0

链接在某些时候成为了广告的重定向。 – Ariane 2018-01-23 16:40:36

2

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

“如果你想使用箭头,删除,在Chrome退格键,你必须使用的keydown在这些键按键只工作在Firefox和Opera。”

您的代码在iE8(在FF中工作)中不适用于我,因此我将按键切换到了keydown。现在在IE中运行。没有Chrome在这里测试。

相关问题