私はJavascriptを使用して、クライアント側の検証の形式としてさまざまなテキスト入力フィールドの文字を制限し、使いやすさを向上させています。私はこれを行うために次のコードを使用しています:
function validNumbers(caller) {
var exp = /^[\d.]+/g;
var str = '';
if (caller.value.match(exp)) {
str = caller.value.match(exp).toString();
} else {
str = '';
}
str = str.replace(/\D/g,'');
caller.value = str;
}
この関数をonkeypress="validNumbers(this);"で呼び出します。そして、ほとんどの場合、それは魅力のように機能します。問題は、フィールドに無効な文字を入力すると、フィールドの値が更新されているように見えますが(Javascriptの観点から)、次のキーを押すまで文字は残ります。次のキーも無効であっても、視覚的に次のキーの値に置き換えられます。望ましい効果は、無効なキーが押されたときに、無効な値が視覚的にも表示されないことです。どうすればこれを達成できますか?
編集:正しい方向に進んだので、以下の答えを選択しました。「!@#$%^&*()_ +」のような文字を防ぐために、除外されたイベントのリストにe.shiftKeyを追加する必要がありましたが、それは私にとって問題ではありませんでした。私自身で。