【问题标题】:Why 'keydown' event works like 'keypress' event?为什么“keydown”事件像“keypress”事件一样工作?
【发布时间】:2013-02-24 23:31:48
【问题描述】:

当我按住一个按钮时,下一个示例代码会多次输出“keydown”消息。文档says 表示按下按钮一次,keydown 事件发生一次。因此,keydown 事件的工作方式与下一个示例中的 keypress 事件类似。

<!DOCTYPE HTML>
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title></title>

  <script type='text/javascript' src='jquery.js'></script>
  <script type='text/javascript'>
    function onLoad()
    {
        $( '#text' ).on( 'keydown', function() { console.info( 'keydown' ) } ); 
    }   
  </script>

  </head>
  <body onload='onLoad()'>
     <input type='text' id='text'>

  </body>
</html>

我在 Windows、Firefox 19.0.2 和 Google Chrome 25.0.1364.152 上对其进行了测试。我还创建了一个fiddle(问题可以重现)。重现问题的 JQuery 版本:1.8.2、1.9.1。

更新。

我确实意识到了问题:How can I avoid autorepeated keydown events in JavaScript?

【问题讨论】:

  • 'keydown' event works like 'keypress' event? 是什么意思?
  • 当你按住键盘按钮时,它会为它写入的每个新字符触发一个推送事件,因为它被认为是一个新的keypress
  • @Sarfraz 我感谢当我按下按钮时 keydown 事件只触发一次。例如。 KeyUp 事件仅在我释放按钮时触发一次,我感谢它仅用于按下按钮的事实。

标签: javascript jquery


【解决方案1】:

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

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

【讨论】:

  • 我只是想添加每次按下的按键和按下按键,按键将在按键保持按下状态时重复触发。
  • @JesseEarle 我们刚刚发现 keydown 也会重复触发。
  • 仅供参考,上面的参考现在链接到垃圾邮件站点。
  • 不管它说什么,但实际上 keydown 事件紧随其后的是 keydown 事件
【解决方案2】:

KeyPress 事件不是由非字符键引发的;但是,非字符键确实会引发 KeyDown 和 KeyUp 事件。

关键事件按以下顺序发生:

  1. KeyDown
  2. 按键
  3. KeyUp

Are these events available on the Window, Document, Form, focusable elements
Test Page

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我这里有答案,慢慢跟着我: keydown :当您开始键入 key 或开始更改某些内容时工作,并且 keydown 为您提供一次结果,但在最后一个结果之前给您结果而不是最后一个结果。 keyup:当您停止键入键或返回(更改诸如删除字符之类的内容)时工作,它会给您最后的结果。 keypress: 当你开始输入 key 但没有开始改变某些东西时工作,并且 keydpress 给你一个结果,但在最后一个之前给你结果,which (lastResult - 1)

      【讨论】:

        猜你喜欢
        • 2016-11-24
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 2013-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多