我正在尝试使用jquery验证(http://jqueryvalidation.org/)来验证函数。
调用validate函数并应用以下规则集(缩写)。
$('#sampleParameters2').validate({
rules: {
P00003: {
custom_float: true,
required: true },
P00004: {
min: 0 },
P00009: {custom_float: true}
},
submitHandler: function (form) { ......
如果我违反了我创建的自定义规则custom_float,我会得到我期望的消息。
但是,如果我违反了'required'或'min'规则,提交处理程序仍会被调用,我没有收到任何消息。
输入格式如下:
<input class="number" type="text" name="P00003" id="P00003" placeholder="in feet" onChange="save_data(this.name,this.value)">
我可以使用html5验证解决最小问题(只是在表单中设置min = 0)但不幸的是,这是一个已知的错误。 (Is there a bug with min="0" in jquery validation? Or am I overlooking something?)
我认为这只是那个错误...但在上面的链接中,他们实际上建议在规则中设置min:0是解决它的方法。此外,'required'也不起作用。只有自定义规则(所以我知道问题不在验证调用中)。
编辑:由于评论,我包括我的自定义浮动规则。 (编写以查看自定义规则是否有效)$.validator.addMethod("custom_float", function (value, element) {
return value.match(/^([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*)|)$/);//Accepts only floats or blank space
}, "Please enter a valid float number");
另请注意,要解决min:0不工作问题并转向更大的鱼,我只需编写另一个自定义规则并分配它......它的工作原理。也就是说,我想弄清楚真正的问题是什么,并以“正确”的方式做到:
$.validator.addMethod("positive", function (value, element) {
if(value==null || value.trim()=="") {
return true;
} else
return (value>0);
}, "Please enter a value greater than or equal to zero");