12

次のサンプル コードは、ボタンを押している間、'keydown' メッセージを何度も出力します。ドキュメントによると、ボタンを 1 回押すとキーダウン イベントが 1 回発生します。したがって、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 でテストしました。また、フィドルを作成しました(問題は再現できます)。問題が再現される JQuery のバージョン: 1.8.2、1.9.1。

アップデート。

問題に気付きました: JavaScript でキーダウン イベントの自動繰り返しを回避するにはどうすればよいですか? .

4

4 に答える 4

29

キーが押されるkeydownとイベントが発生し、その後すぐにkeypressイベントが続きます。次に、keyupキーが離されたときにイベントが生成されます。

keydownとの違いをkeypress理解するには、「文字」と「キー」の違いを理解しておくと役に立ちます。「キー」はコンピューターのキーボード上の物理的なボタンであり、「文字」はボタンを押して入力する記号です。理論的には、keydownおよびkeyupイベントはキーの押下またはリリースをkeypress表し、イベントは文字の入力を表します。理論の実装は、すべてのブラウザーで同じではありません。

于 2013-03-09T12:31:35.643 に答える
11

KeyPress イベントは、文字以外のキーでは発生しません。ただし、文字以外のキーは KeyDown イベントと KeyUp イベントを発生させます。

主なイベントは次の順序で発生します。

  1. KeyDown
  2. キープレス
  3. キーアップ

これらのイベントは、ウィンドウ、ドキュメント、フォーム、フォーカス可能な要素で利用できますか
テスト ページ

于 2013-03-09T12:35:02.410 に答える
1

キーが押されると keydown イベントが発生し、その後すぐに keypress イベントが発生します。

于 2013-03-09T12:30:15.023 に答える