使用验证插件验证十进制数字

时间:2016-03-27 13:34:23

标签: jquery validation

我的表单中有一个input元素,用户可以在其中输入特定产品的价格。为此,他可以输入一个带有十进制数的金额,或者他可以简单地设定一个没有十进制数的价格。

<input type="text" id="product_price" name="product_price" maxlength="10" step="0.01" placeholder="Enter price">
$('#addForm').validate({
    rules:{
        product_name: {
            required: true,
        },
        product_price: {
            required: true,
            number: true
        }
    }
})

这就是我所做的,但是我没有得到我想要达到的目标。我试图让它成为一个用户可以将number长度10加到two小数。例如,如果他输入11111111111111111111.11这两者都应该有效。我该怎么做以及代码是什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

使用正则表达式。在JavaScript中,

if (/^\d{1,10}(\.\d{2})?$/.test(product_price.value))
    // do stuff

此正则表达式应与14687132518671.68匹配,但不能与46812547.178687匹配。

顺便说一句,您不需要maxlengthstep属性,只需删除它们即可:)

Fiddle

答案 1 :(得分:1)

不确定这只是我,但我无法使step可靠地工作。但似乎验证将允许您override the method获取数字(或其他任何类型)。所以这就是我可能会做的事情:

$.validator.methods.number = function(value,e) {
    return this.optional(e) || /^\d+\.?\d{0,2}$/.test(value)
};

正则表达式将验证是否已输入至少一个数字,可选地后跟一个小数点和最多两个附加数字。

然后删除步骤:

<input type="text" id="product_price" name="product_price" maxlength="10" placeholder="Enter price">