【问题标题】:keypress event not working in IE and Chrome but working in FF按键事件在 IE 和 Chrome 中不起作用,但在 FF 中起作用
【发布时间】:2011-09-12 18:26:27
【问题描述】:

知道为什么会发生这种情况吗?我通常会认为 Chrome 会更宽容地处理这些代码?

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

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

感谢您的帮助!

【问题讨论】:

  • 对我来说,您的键码 39 是 -> '(引号)
  • 检查这个:jsfiddle.net/LmXaW/10
  • @RicardoArruda 它使用的是keydown事件而不是keypress。

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


【解决方案1】:

是的,这可以通过将 onkeypress 事件更改为 onkeydown 来实现。此外,当您想在空间点击时触发事件时,仅在 Internet Explorer 的情况下才会存在此问题。

【讨论】:

    【解决方案2】:

    keypress 更改为keydown

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

    keydown 事件在按键被按下时发生,紧随其后的是 keypress 事件。然后在按键释放时产生keyup事件。

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

    【讨论】:

    • 谢谢大家!是的keydown有效!也谢谢你的解释!
    • @Ariane 我用那个网页的文本交换了链接(我可以通过wayback machine检索)
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-03-12
      • 2015-01-14
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      相关资源
      最近更新 更多