删除“$” 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" />
<强>更新强>结果 我决定使用检查范围,并使用正则表达式的货币一的CustomValidator。感谢迈克尔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})?$
有一种方法通过注册脚本来做到这一点;然而,为什么不使用正则表达式验证,以确保输入正确的是?
此外,范围验证上的字段执行的onblur JS事件,而不是改变。
只注意到你有一个“”为小数点,但是这意味着正则表达式会接受这个位置的任意字符。您应该使用\.
为小数点。
/^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(\.[0-9][0-9])?$/
不隶属于 StackOverflow