37

では、.keypress と .keydown/.keyup の違いは何ですか? 現在、キーに対して .which 値 38 を返す .keydown を使用しています。これを .keypress に変更すると、同じキーに対して値 109 が返されます。違いは何ですか? 同じキーに対して値が異なるのはなぜですか?

4

5 に答える 5

23

ボタンを押すと が発射され、keydown離すと が発射されますkeyup。はkeypress通常、これら 2 つの間に来ます。

keydownどのキーが変更されたkeyupかについて話します。キーが表す文字を示します。keypress

これはすべてブラウザに依存することに注意してください。

さまざまなブラウザーに実装されている主要なイベントの違いについては、この記事を参照してください。

于 2012-04-17T13:02:27.327 に答える
21

私はd$%^ @ dになります。キーを押すと本当に違いがあり、これまでずっと気づいていませんでした。笑

私のフィドルを見て、「r」の文字のようなものを試してください

http://jsfiddle.net/SpYk3/NePCm/

どういうわけか私はこれに注意を払ったことがありません

詳細情報が見つかりました:

http://www.quirksmode.org/js/keys.html

「2つのプロパティはとです。簡単にkeyCode言えば、ユーザーが実際に押したキーボードキーについて何かを言い、結果の文字のASCII値を示します。これらの情報は同じである必要はありません。たとえば、小文字です。 'a'と大文字の'A'は、ユーザーが同じキーを押したために同じですが、結果の文字が異なるために異なります。charCodekeyCodecharCodekeyCodecharCode

ExplorerとOperaはをサポートしていませんcharCode。ただし、文字情報は。keyCodeでのみ提供されonkeypressます。onkeydown重要な情報が含まれて-up keyCodeいます。」

于 2012-04-17T13:24:23.503 に答える
14

次の投稿を読む必要があります:http: //javascript.info/tutorial/keyboard-events

キーダウンは、キーを押すとトリガーされ、スキャンコードを提供します。Keypressは、keydownの後にトリガーされ、char-codeを提供しますが、文字キーに対してのみ保証されます。

于 2012-04-17T13:00:06.813 に答える
9

通常の場合、次のように進みkeyupます。

$(document).keyup(function(e){
  console.log(e.which);
});

理由:

  1. keydownユーザーがキーを押したままにするkeypressと発火し続けますが、keyup一度だけ発火します。
  2. keypressSHIFT特殊キー (例: ) を検出せず、検出keydownkeyupます。
于 2014-07-31T02:51:07.380 に答える
2

KeyPress は KeyDown の後に発生します。したがって、KeyDown を使用してそれがどのキーであるかを判断し、次に KeyPress を使用してその文字を禁止することができます。

于 2012-04-17T12:56:11.710 に答える