我的表单中有一个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
小数。例如,如果他输入1111111111
或1111111111.11
这两者都应该有效。我该怎么做以及代码是什么?
谢谢!
答案 0 :(得分:3)
使用正则表达式。在JavaScript中,
if (/^\d{1,10}(\.\d{2})?$/.test(product_price.value))
// do stuff
此正则表达式应与1
,46871325
,18671.68
匹配,但不能与46812547.178687
匹配。
顺便说一句,您不需要maxlength
和step
属性,只需删除它们即可:)
答案 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">