では、.keypressと.keydown/.keyupの違いは何ですか?現在、キーに対して.which値38を返す.keydownを使用していますが、.keypressに変更すると、同じキーに対して値109が返されます。違いは何ですか?また、同じキーの値が異なるのはなぜですか?
ボタンを押すと、keydown
が起動し、離すとkeyup
が起動します。 keypress
は通常、これら2つの間にあります。
keydown
とkeyup
は、どのkeyが変更されたかについて話します。 keypress
は、キーが表すcharacterを示します。
これはすべてブラウザに依存していることに注意してください!
さまざまなブラウザに実装されている主要なイベントの違いに関するこの記事 を参照してください。
私はd $%^ @ dになりますが、実際にキーを押すと違いがあります。笑
私のフィドルを見て、文字「r」のようなものを試してください
http://jsfiddle.net/SpYk3/NePCm/
どういうわけか私はこれに注意を払ったことがない
詳細情報が見つかりました:
http://www.quirksmode.org/js/keys.html
「2つのプロパティは
keyCode
とcharCode
です。簡単に言えば、keyCode
はユーザーが押した実際のキーボードキーについて何かを言い、charCode
はASCII結果の文字の値。これらの情報のビットは同じである必要はありません。たとえば、小文字の「a」と大文字の「A」は同じkeyCode
。ユーザーは同じキーを押しますが、結果の文字が異なるため異なるcharCode
を押します。ExplorerおよびOperado notは
charCode
をサポートしません。ただし、文字情報はkeyCode
、ただしonkeypress
のみ。onkeydown
および-up
keyCode
にはキー情報が含まれています。」
次の投稿を読む必要があります。 http://javascript.info/tutorial/keyboard-events
キーダウンは、キーを押すとトリガーされ、スキャンコードを提供します。キー押下はキーダウン後にトリガーされ、文字コードを提供しますが、文字キーに対してのみ保証されます。
通常は、keyup
に進みます。
$(document).keyup(function(e){
console.log(e.which);
});
理由:
keydown
とkeypress
は1回だけ起動しますが、ユーザーがキーを押したままにすると、keyup
は起動し続けます。keypress
は特別なキー(例:SHIFT
)、keydown
およびkeyup
は検出しません。KeyPressはKeyDownの後に発生します。したがって、KeyDownを使用してキーを決定し、KeyPressを使用してその文字を禁止できます。