2011-10-25 10 views
5
$(document).keydown(function (event) 
    { 
    alert(event.which); 
    }); 

セミコロンのキーは、です。、Firefoxでは59、Chromeでは186となります。しかし、keydownイベントのjQueryリファレンスページから、jQueryにバグがあるのか​​、それとも私が何かしているのかどうかを確認しようとしています。

と表示されます。ブラウザはこの情報を格納するために異なるプロパティを使用しますが、jQueryは信頼できる方法でキーコードを取得できるように.whichプロパティを正規化します。矢印のような特殊キーのコードを含むキーボード上のキーに移動します。 "

何か不足していますか?

答えて

4

whichプロパティは、キーを押した「ワンストップショップ」で、keyCodecharCodeのプロパティの違いを無視できます。これがjQueryが提供する「正規化」です。

whichの値の違いは、さまざまなブラウザが情報を提供する方法の違いになります。そのため、戻ってくるさまざまな値を処理するコードを記述する必要があります。この現象はオンラインでa few referencesです。ここで

+0

ありがとう!ドキュメントページを明確にする必要があるようです。 – Nick

0

jQueryについてはわかりませんが、キーを入力するためのキー押下イベントと、矢印などの特殊キーのkeydownイベントのみを使用することをお勧めします。

+0

悲しいことに、これは移植性がありません。下記を参照してください:https://twitter.com/jezenthomas/status/624174305685958656 –

+0

@JezenThomasあなたがそこに追加しようとしているものは不明です。あなたのテーブルはkeydownイベントについて議論しておらず、キー入力イベントがキーを入力するために働くことに同意します。 – Neil

+0

キー押下イベントは、キーとブラウザによって異なります。 keypressを使用する必要がありますが、通常はキーの種類やキーアップに関連して、あなたが期待しているキーによって異なります。 –

0

はjQueryのないことを「正常化」の全体である:それはちょうどkeyCodeを取得するようcharCodeが存在しない場合は

if (event.which == null) { 
    event.which = original.charCode != null ? original.charCode : original.keyCode; 
} 

が見えます。 charCodeは、event.whichが存在しない場合にのみ使用されます。それはそれらを一致させるために周りの数を変更しません。

関連する問題