ASP.Net RangeValidator スクリプトを実行する前に「$」を削除します
-
21-08-2019 - |
質問
入力の onchange スクリプトを強制的に実行するにはどうすればよいですか 前に RangeValidator のスクリプト?
ユーザーがドル記号またはカンマを入力したときに検証が失敗するのを防ぎたいと考えています。
function cleanUp(str) {
re = /^\$|,/g;
return str.replace(re, ""); // remove "$" and ","
}
<input type="text" id="salary" runat="server"
onchange="this.value=cleanUp(this.value)" />
<asp:RangeValidator ID="salaryValidator"
runat="server" ErrorMessage="Invalid Number"
ControlToValidate="salary" Type="Double" />
アップデート:
範囲をチェックし、通貨 RegEx を使用する CustomValidator を使用することにしました。ありがとう、マイケル・ニスカーン。
function IsCurrency(sender, args) {
var input = args.Value;
// Check for currency formatting.
// Expression is from http://regexlib.com/REDetails.aspx?regexp_id=70
re = /^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$/;
isCurrency = input.match(re);
if (isCurrency) {
// Convert the string to a number.
var number = parseFloat(CleanUp(input));
if (number != NaN) {
// Check the range.
var min = 0;
var max = 1000000;
if (min <= number && max >= number) {
// Input is valid.
args.IsValid = true;
return;
}
}
}
// Input is not valid if we reach this point.
args.IsValid = false;
return;
}
function CleanUp(number) {
re = /^\$|,/g;
return number.replace(re, ""); // remove "$" and ","
}
<input type="text" id="salary" runat="server" />
<asp:CustomValidator ID="saleryValidator" ControlToValidate="salary" runat="server"
ErrorMessage="Invalid Number" ClientValidationFunction="IsCurrency" />
解決
CustomerValidator コントロールを使用して、JS クリーンアップ メソッドと RangeValidator メソッドの機能を組み合わせてみましたか。
他のヒント
そこは改善できると思います。これにより、カンマとセントの数字がオプションになります。
^\$?([0-9]{1,3},?([0-9]{3},?)*[0-9]{3}|[0-9]+)(\.[0-9]{0,2})?$
スクリプトを登録することでこれを行う方法があります。しかし、入力が適切であることを確認するために正規表現バリデータを使用しないのはなぜでしょうか。
また、Range バリデーターは、変更時ではなく、onBlur js イベントのフィールドに対して実行されます。
あなたが「」を持っていることに気づきました。小数点については、それは正規表現がその場所のあらゆるキャラクターを受け入れることを意味します。使用する必要があります \.
その小数点については。
/^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(\.[0-9][0-9])?$/
所属していません StackOverflow