如何在jquery中验证金钱,我可以输入的最大金额是9999.99 所以我的要求是: 1.应该只允许数字和一个点 2.max长度为7(包括点) 3.最大点长度为4 4. dot dot max length为2
目前我的文本框只允许使用以下代码的数字和一个点
$('#txtpaymentamnt, #txttenderamt').on("keypress", function (e) {
alert(e.which);
if (e.which != 8 && e.which != 0 && ((e.which < 48 || e.which > 57) && e.which != 46)) {
e.preventDefault();
}
答案 0 :(得分:16)
答案 1 :(得分:9)
使用jQuery validation plugin,您可以使用Jack的正则表达式(我还没有测试过)设置您自己的规则,如下所示:
jQuery.validator.addMethod(
"money",
function(value, element) {
var isValidMoney = /^\d{0,4}(\.\d{0,2})?$/.test(value);
return this.optional(element) || isValidMoney;
},
"Insert "
);
然后,您可以使用validate方法设置规则:
$("#myForm").validate({
rules: {
nameOfMyInputField: {
money: true,
}
}
});
答案 2 :(得分:0)
如果我是你,我会使用the isNumeric function in this answer检查输入是否为数字,然后检查该数字是否适用于您的情况。
要获得“有效数字”(根据您的要求),必须:
介于0和9999.99之间(点前最多4位数)。
最多包含2位小数。检查它的一个好方法是截断第n个数字后面的数字(在你的情况下,第二个数字)并将其与原始值进行比较(两个不同的值意味着第二个数字比第一个数字具有更多的十进制数字)。使用Math.round(number*100)/100
截断第二个十进制数字后的所有内容。
我希望这可以帮助您解决问题。
答案 3 :(得分:0)
如你所说,如果你正在使用MVC
。 MVC
框架提供annotations
,可用于获得最佳效果。即使decimal
没有明确的数据注释。
以下内容可用于两个小数位
[RegularExpression(@"^\d+.\d{0,2}$")]
对于范围,您可以使用
[Range(0, 9999.99)]
因此您的模型字段变为
[RegularExpression(@"^\d+.\d{0,2}$")]
[Range(0, 9999.99)]
public decimal Money{ get; set; }
希望它有助于
答案 4 :(得分:0)
答案 5 :(得分:-1)
$.validator.addMethod("currency", function (value, element) { return
this.optional(element) ||
/^\$(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$/.test(value); }, "Please
specify a valid amount");
这是jquery验证功能。