私のHTMLページには、入力テキストフィールドがあります。キーボードの数字キーと左右矢印だけを入力したいと思っています。私は以下のJavaScriptを試しましたが、問題はありました。keyCodeの問題 - %文字の入力を防ぐことはできません
<input onkeypress="return allowNumberOnly(event)" />
function allowNumberOnly(event) {
event = event || window.event;
var charCode = (event.which) ? event.which : event.keyCode;
//keyCode 48-57 represent the number 0-9
//keyCode 37,39 represent the Left and Right arrow
//keyCode 46 represent the Delete key
//keyCode 8 represent the Backspace key
return charCode == 37 || charCode == 39 || charCode == 46 || charCode == 8
|| (charCode >= 48 && charCode <= 57);
}
は、このコードをテストした後、私は、左矢印および%特殊文字のキーコードの両方37.あるので、私はその間に左矢印を許可するユーザー入力%文字を防ぐことができないという問題を発見しました。なぜこれが起こるのか分かりません。私はいつもkeyCodeはキーボードの各キーごとに一意でなければならないと考えました。私はonkeypressの代わりにonkeyupを使うことを考えました。しかし、onkeyupはユーザーが無効な文字を最初に入力してから、入力テキストを削除することができます。この動作は私が望むものではありません。どんな提案もありがとうございます。
FireFoxでコードをデバッグしたところ、次の違いが見つかりました。
1%を入力すると、event.which == 37とevent.keyCode == 0
2.左矢印、event.which == 0とevent.keyCodeの== 37
この違いを利用することで問題は解決されたようです。 IEとChromeで引き続き試してみます。
フィドルでそれを確認してください。 – JJJ