私は、数値以外の入力を許可しない種類の検証を使用するテキストフィールドに取り組んでいます。そのため、私の最初のコードは非常に単純で、次のようになりました。
$(textField).onKeyPress(function(e) {
if (e.which < 48 && e.which > 57)
e.preventDefault();
});
これはかなり簡単ですが、(すべてのブラウザの最新バージョンでは)Firefoxはこれを矢印キーと削除/バックスペースキーによる移動も防止しますが、他のブラウザはそうではありません。
周りを見回すと、これらのキーもチェックし、e
イベント参照で公開されているさまざまなプロパティをチェックする必要があることがわかりました。
私の最終的なコードは次のようになります。
$(textField).onKeyPress(function(e) {
var code = e.which || e.keyCode;
if (code > 31 // is not a control key
&& (code < 37 || code > 40) // is not an arrow key
&& (code < 48 || code > 57) // is not numeric
&& (code != 46) // is not the delete key
)
e.preventDefault();
});
ただし、これは、非数値を防ぐだけの非常に単純な問題を解決するには多すぎると感じます。
私は何が間違っているのですか?この種の検証に関するベストプラクティスはどれですか?