del
キーが押された場合、127
ではなく、del
キーの代わりに46
が返されます。JavaScriptで間違ったASCIIコードが返される
function countLength(evt) {
var inp = (evt.which) ? evt.which : event.keyCode;
alert (inp);
return true;
}
del
キーが押された場合、127
ではなく、del
キーの代わりに46
が返されます。JavaScriptで間違ったASCIIコードが返される
function countLength(evt) {
var inp = (evt.which) ? evt.which : event.keyCode;
alert (inp);
return true;
}
event.keyCode
によって返される値は、ASCIIコードではありません。キーボード上でどのキーが押されたかを示すだけです。例えばキーボードの最上行48を返しに0
-keyを押すが、ASCIIにキーコードを変換する0
96 numberblock戻る上を押圧するには、対応する値を含む配列のいくつかの種類を使用しなければなりません。この作業では、
shiftKey
と
altKey
のように、同時に押された他のすべてのキーをチェックして正しい結果を得なければなりません。
最初の段落は正しいです。ただし、キーコードと文字コードの間のマッピングは保証されていません。これは、キーボードレイアウトとタイプによって異なります。文字コードに関する信頼性の高い情報を与える唯一のイベントは 'keypress'イベントです。これを使用するときはShiftやAltなどの修飾キーのチェックをする必要はありません。 –
@TimDownそれは本当です(スカンジナビアのキーボードを使って自分自身)が、 'keypress'を通してすべてのキーを押すことはできません(例えば' delete'など)。私はちょうど私の答えにこの問題を追加しようとしていたが、それはあなたのコメントに既にあるので、不要であるようだ。 – Teemu
'keypress'は印刷可能なものすべてを検出しますが、すべてのブラウザで印刷できないキーストロークでは発生しません。 Deleteキーを検出するために 'keydown'を使用します。 –