为什么'keydown'事件就像'keypress'事件一样?

ser*_*ach 9 javascript jquery

当我按住一个按钮时,下一个示例代码会多次输出'keydown'消息.文档,只需按一下按钮,就会发生一次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>
Run Code Online (Sandbox Code Playgroud)

我在Windows,Firefox 19.0.2和Google Chrome 25.0.1364.152上进行了测试.我也创造了一个小提琴(问题可以复制).重现问题的JQuery版本:1.8.2,1.9.1.

更新.

我确实意识到了这个问题:如何在JavaScript中避免自动重复的keydown事件?.

dea*_*ock 26

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

为了了解之间的区别keydownkeypress,它是有用的了解"性格"和"重点"之间的区别."键"是计算机键盘上的物理按钮,而"字符"是通过按下按钮键入的符号.理论上,keydownkeyup事件表示按下或释放键,而keypress事件表示键入的字符.在所有浏览器中,该理论的实现并不相同.

  • 我只是想在每次按下时添加该键盘和按键一次,按键会在键按下时反复点亮. (4认同)
  • @JesseEarle我们刚刚发现keydown也会反复发射. (3认同)

Uma*_*eem 11

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

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

  1. 的KeyDown
  2. 按键
  3. KEYUP

这些事件是否可用于窗口,文档,表单,可聚焦元素
测试页面