[英]Remove “$” before ASP.Net RangeValidator script executes
如何强制输入的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" />
更新:
我决定使用CustomValidator来检查范围并使用货币RegEx。 谢谢Michael Kniskern。
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})?$
只是注意到您有一个'。 小数点,但这意味着正则表达式将接受该位置的任何字符。 您应该使用\\.
对于那个小数点。
/^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(\.[0-9][0-9])?$/
有一种方法可以通过注册脚本来完成。 但是,为什么不使用正则表达式验证器来确保输入正确呢?
另外,范围验证器在字段onBlur js事件上执行,而不是在更改上执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.