我正在使用jquery-validation插件。当我点击更新(updte)时它首先工作正常它显示三个字段的错误标签。当我点击删除(dlt)首先它检查名称字段然后如果我点击更新(updte)它再次只检查名称字段并将表单赋予有效。当它转到dlt函数时,它首先采用name的规则。然后,如果它转到updte函数,那么它也需要名称规则并传递虽然phno和地址是空的,但形式有效
我的代码:
var myrules ={rules : {
name : {
check : true,
},
address : {
check : true,
},
phno : {
check : true,
},
}
updte: function(){
var form = this.refs.myform.getDOMNode();
this.checkField();
$(form).validate(myrules);
console.log($(form).valid());
}
dlt: function(){
var form = this.refs.myform.getDOMNode();
this.checkField();
$(formNode).validate({rules :{
name : {
check : true,
},
}
});
console.log($(form).valid());
}
checkField : function(){
jQuery.validator.addMethod("check",function(value,element){
if(value){
return true;
}
},"This is required");
答案 0 :(得分:0)
.valid()
方法没有任何问题。问题在于对.validate()
方法的错误假设。您是在dlt
和updte
函数中反复调用它,并希望它能够执行一些其他功能。
.validate()
方法仅用于初始化表单上的插件。只有在通过DOM ready处理程序加载页面时才会被称为一次,并且不应该多次调用它。在它被调用一次后,所有后续调用都将被忽略。
如果您需要在初始化后动态更改规则,开发人员已为此目的提供了the .rules()
method。
在DOM上调用.validate()
一次,准备初始化插件。
只能在.rules('add')
和.rules('remove')
函数中调用dlt
和updte
来根据需要设置规则。