1. ホーム
  2. ジャバスクリプト

[解決済み】.keyCodeと.whichの比較

2022-04-17 11:43:45

質問

Stack Overflowのどこかに回答があるかと思ったのですが、見つかりません。

キー押下イベントをリッスンする場合、以下のようにします。 .keyCode または .which をクリックすると、Enterキーが押されたかどうかがわかりますか?

私はいつも次のような方法をとっています。

$("#someid").keypress(function(e) {
  if (e.keyCode === 13) {
    e.preventDefault();
    // do something
  }
});

しかし、私が見ている例では .which の代わりに .keyCode . 何が違うのでしょうか?一方は他方よりもクロスブラウザフレンドリーなのでしょうか?

解決方法は?

注意事項 以下の回答は2010年に書かれたものです。それから何年も経ってから、ここで両 keyCode which は非推奨となり、代わりに key (論理キー用)と code (キーの物理的な配置のため)。しかし、IEは code をサポートし、その key は、古いバージョンの仕様に基づいているため、正確ではありません。これを書いている時点では、EdgeHTMLとChakraをベースにした現在のEdgeは以下の機能をサポートしていません。 code しかし、マイクロソフトは ブリンク - と V8 - をベースとしたEdgeの代替品であり、おそらくはそうなる/そうなる予定です。


一部のブラウザでは keyCode を使用するものと、 which .

jQueryを使用している場合は、確実に which をjQueryの 標準化 ; 詳しくはこちら

jQueryを使用していない場合は、このようにします。

var key = 'which' in e ? e.which : e.keyCode;

あるいは、その代わりに

var key = e.which || e.keyCode || 0;

...という可能性を処理するものです。 e.which0 (を復元することで)。 0 を使い、最後に JavaScriptの不思議なほど強力な || 演算子 ).