2012-03-06 10 views

答えて

1

event.keyCodeによって返される値は、ASCIIコードではありません。キーボード上でどのキーが押されたかを示すだけです。例えばキーボードの最上行48を返しに0 -keyを押すが、ASCIIにキーコードを変換する0

96 numberblock戻る上を押圧するには、対応する値を含む配列のいくつかの種類を使用しなければなりません。この作業では、 shiftKeyaltKeyのように、同時に押された他のすべてのキーをチェックして正しい結果を得なければなりません。

+0

最初の段落は正しいです。ただし、キーコードと文字コードの間のマッピングは保証されていません。これは、キーボードレイアウトとタイプによって異なります。文字コードに関する信頼性の高い情報を与える唯一のイベントは 'keypress'イベントです。これを使用するときはShiftやAltなどの修飾キーのチェックをする必要はありません。 –

+0

@TimDownそれは本当です(スカンジナビアのキーボードを使って自分自身)が、 'keypress'を通してすべてのキーを押すことはできません(例えば' delete'など)。私はちょうど私の答えにこの問題を追加しようとしていたが、それはあなたのコメントに既にあるので、不要であるようだ。 – Teemu

+0

'keypress'は印刷可能なものすべてを検出しますが、すべてのブラウザで印刷できないキーストロークでは発生しません。 Deleteキーを検出するために 'keydown'を使用します。 –

1

evtはスタンドアロン機能から取得する場所がわかりません。あなたはそれを渡している場合は、変更:

event.keyCode; 

た:

evt.keyCode; 

それともeventまたはその逆に、すべての3例でevtを変更してみてください。

+0

'

\t \t \t を\t \t ' – sandbox

+0

@Satfazはそれを変更しましたが、動作していません....同じ問題が発生しました – sandbox

+0

動作しない場合、' event'を 'evt'に変更してください。 – Sarfraz

関連する問題