0

key [Up | Down | Press]イベントを処理する場合、.whichまたは.keyCodeを使用する必要がありますか?jQueryで3つのキーボードイベントを処理するためのサンプルコードを入手できますか?jQueryなしでそれを行うことができますか?すべてのブラウザで確実に動作するようにしたいと思います。

アップデート

不思議なことに、jQueryのevent.which正規化は私のhandleKey Press(event)ハンドラーでは機能しませんでした:

// Add which for key events
if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
    event.which = event.charCode || event.keyCode;
}

handleKey Press内でこの正規化の前後にこれを取得しています(event.whichをevent.keyCodeの値に設定していません):

  • event.which = 0
  • event.charCode = 0
  • event.keyCode = 40

ただし、代わりにhandleKeyDownを使用するとコードは機能します。キープレスとキーダウンの関係だと思います。コードは私のhandleKeyDown (イベント)ハンドラーで機能します。

残念ながら、ナビゲーションに矢印キーを使用したいので、キープレス(キーダウンではなく)を使用する必要があります。ユーザーが矢印キーを押し続けると、キーダウンイベントが1回トリガーされますが、挿入されるたびに個別のキープレスイベントがトリガーされます。キャラクター)。

4

4 に答える 4

0

バインドできる keypress() のドキュメントについては、jQuery API を参照してください。 http://api.jquery.com/keypress/

また、jquery を使用してキープレス ナビゲーションを作成するための適切なチュートリアルは次のとおりです

編集: API からの重要な/より関連性の高い行:

キーの押下をキャッチする必要がある場合 (たとえば、ページにグローバル ショートカット キーを実装する場合)、この動作をドキュメント オブジェクトに関連付けると便利です。イベントのバブリングにより、明示的に停止しない限り、すべてのキー押下は DOM を介してドキュメント オブジェクトに到達します。

どの文字が入力されたかを判断するには、ハンドラー関数に渡されるイベント オブジェクトを調べることができます。ブラウザはさまざまな属性を使用してこの情報を保存しますが、jQuery は .which 属性を正規化して、文字コードを確実に取得できるようにします。

keydown と keyup はどのキーが押されたかを示すコードを提供し、keypress はどの文字が入力されたかを示すことに注意してください。たとえば、小文字の "a" は、keydown と keyup では 65 と報告されますが、keypress では 97 と報告されます。大文字の「A」は、すべてのイベントで 65 として報告されます。この違いにより、矢印キーなどの特殊なキーストロークをキャッチする場合は、.keydown() または .keyup() を選択することをお勧めします。

于 2010-08-25T18:32:06.020 に答える
0

このページによると:

event.whichkeydownおよびの IE<9 では未定義keyupです。

event.keyCodekeypress文字を返すキーの場合、Gecko (Seamonkey、Firefox) では 0です。

event.charCodeInternet Explorer (Mac) による keydown と keyup でのみサポートされます。

JSFiddleで試してみてください

于 2014-02-11T12:21:47.177 に答える
0

あなたの問題に関連するこのスレッドを参照してください。

一般に、charCode と keyCode の両方を追跡できるため、.which を支持することがよくあります。 これらの異なる方法論を正規化するためにjQueryに組み込まれたevent .

keyCodes の詳細については、こちらを参照してください。

于 2010-08-25T17:49:44.390 に答える
0

jQuery は正規化するためevent.which( api.jquery.com/event.which/を参照)、必要なのはそれだけです。

于 2010-08-25T17:49:45.780 に答える