[解決済み】.keyCodeと.whichの比較
質問
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.which
は
0
(を復元することで)。
0
を使い、最後に
JavaScriptの不思議なほど強力な
||
演算子
).
関連
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み】JS ファイルが net::ERR_ABORTED 404 (Not Found) を取得する)
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】未定義のプロパティ 'forEach' を読み取ることができない
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] どのDOM要素にフォーカスがあるかを調べるには?
-
[解決済み] jQueryイベントKeypress。どのキーが押されたか?
-
[解決済み] Select <a> which href ends with some string
-
[解決済み] jQueryでエスケープキーに使用するキーコードについて
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】リソースはドキュメントと解釈されるが、MIMEタイプはapplication/zipで転送される
-
[解決済み】SyntaxError: 期待された式が、'<'を得た。
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする
-
[解決済み] AngularJSでkeypressイベントを使用するには?
-
[解決済み] ユーザーがEnterキーを押してフォームを送信できないようにする