valid()函数不能正常工作

时间:2015-07-23 07:45:56

标签: jquery jquery-validate

我正在使用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");

1 个答案:

答案 0 :(得分:0)

.valid()方法没有任何问题。问题在于对.validate()方法的错误假设。您是在dltupdte函数中反复调用它,并希望它能够执行一些其他功能。

.validate()方法用于初始化表单上的插件。只有在通过DOM ready处理程序加载页面时才会被称为一次,并且不应该多次调用它。在它被调用一次后,所有后续调用都将被忽略

如果您需要在初始化后动态更改规则,开发人员已为此目的提供了the .rules() method

  1. 在DOM上调用.validate()一次,准备初始化插件。

  2. 只能在.rules('add').rules('remove')函数中调用dltupdte来根据需要设置规则。