如何在jquery中validation资金

如何在jquery中validation金钱,我可以输入的最大金额是9999.99所以我的要求是:1。它应该只允许数字和一个点2.max长度是7(包括点)3。前点最大长度是4 4。点最大长度为2后

目前我的文本框只允许使用以下代码的数字和一个点

$('#txtpaymentamnt, #txttenderamt').on("keypress", function (e) { alert(e.which); if (e.which != 8 && e.which != 0 && ((e.which  57) && e.which != 46)) { e.preventDefault(); } 

您可以使用正则表达式执行此操作:/ /^\d{0,4}(\.\d{0,2})?$/

编辑:

这是要求的小提琴

使用jQueryvalidation插件,您可以使用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, } } }); 

如果我是你,我会在这个答案中使用isNumeric函数来检查输入是否是一个数字,然后检查这个数字是否对你的情况有效。

要获得“有效数字”(根据您的要求),它必须:

  • 介于0和9999.99之间(点前最多4位数)。

  • 最多包含2位小数。 检查它的一个好方法是截断第n个数字后面的数字(在你的情况下,第二个数字),并将它与原始值进行比较(两个不同的值意味着第二个数字比第一个数字有更多的十进制数字)。 使用Math.round(number*100)/100截断第二个十进制数字后的所有内容。

我希望这可以帮助你解决问题。

如你所说,如果你正在使用MVCMVC框架提供了可用于获得最佳效果的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; } 

希望能帮助到你

我创造了一个可以帮助某人的小要点:

输入格式为货币,按钮表示提交表格

https://gist.github.com/cpoDesign/8788cb6621b64c45285c

希望能帮助到你