【问题标题】:jQuery .keypress & .keydown .whichjQuery .keypress 和 .keydown .which
【发布时间】:2012-04-17 12:50:58
【问题描述】:

好的,.keypress 和 .keydown/.keyup 有什么区别?目前我正在使用 .keydown ,它为我的键返回 38 的 .which 值,现在如果我将其更改为 .keypress 它为同一个键返回 109 的值。有什么区别?为什么同一个键的值不同?

【问题讨论】:

  • 不同的浏览器应该导致不同的事件,但不是不同的按键命令
  • 我有一个 json 对象,每个键事件都按浏览器划分,我会用所有三个按键快速发布它,我们可以测试一下,gimmie 像 10 分钟跨度>

标签: javascript jquery keyboard keypress keydown


【解决方案1】:

如果你按下一个按钮,它会触发一个keydown,释放它会触发一个keyup。 keypress 通常介于这两者之间。

keydown 和 keyup 讨论哪个 key 已更改。 keypress 告诉该键代表哪个字符。

请注意,这完全取决于浏览器!

见this article about the differences between the key events as implemented on various browsers。

【讨论】:

    【解决方案2】:

    我会成为 d$%^@d,按键确实有区别,而我一直没有意识到。哈哈

    看看我的小提琴,试试字母“r”之类的东西

    http://jsfiddle.net/SpYk3/NePCm/

    不知怎么的,我从来没有注意过这个

    找到更多信息:

    http://www.quirksmode.org/js/keys.html

    “这两个属性是keyCode 和charCode。简单地说,keyCode 表示用户按下的实际键盘键,而charCode 给出结果字符的 ASCII 值。这些信息位不必相同;例如,小写字母“a”和大写字母“A”具有相同的 keyCode,因为用户按下相同的键,但 charCode 不同,因为结果字符不一样。

    Explorer 和 Opera 不支持charCode。但是,他们在keyCode 中提供了字符信息,但仅限于onkeypress。 onkeydown 和 -up keyCode 包含关键信息。”

    【讨论】:

    • 是的,这就是为什么我对为什么感到困惑?
    • 正如 jbl 在他的回答中指出的那样,this page 只是稍微描述了这个问题,但它似乎仍然没有完全回答这个问题。也许我读错了页面,但在某一时刻,它仍然指出 charcode 被拉到两者上,只是一个 reutrns 一个不同的值。也许看看一些旧的 js 文档会找到答案。我现在正在寻找,还将重写我的对象以包括按键差异
    • 虽然我建议避免按键,因为它不会像 keydown 和 keyup 那样触发可预测的事件
    【解决方案3】:

    您应该阅读以下帖子: http://javascript.info/tutorial/keyboard-events

    Keydown 触发任何按键并提供扫描码。 Keypress 在 keydown 后触发并给出 char-code,但只保证字符键。

    【讨论】:

      【解决方案4】:

      在正常情况下,请转到keyup:

      $(document).keyup(function(e){
        console.log(e.which);
      });
      

      原因:

      1. keydown 在用户按住按键时会持续触发,而keypress 和keyup 只会触发一次。
      2. keypress 不检测特殊键(例如 SHIFT),keydown 和 keyup 检测。

      【讨论】:

        【解决方案5】:

        KeyPress 发生在 KeyDown 之后。因此,您可以使用 KeyDown 来确定它是什么键,然后使用 KeyPress 来禁止该字符。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-01
          • 2011-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多