由于Validate没有提供表单提交过后,验证不通过触发方法。这里做一下扩展。


引用场景:每次提交表单元素验证不通过触发方法


打开源代码 找到focusInvalid 方法, 这里是提交表单时验证不通过触发方法,在这里做扩展是就好不 过的。

focusInvalid: function() {

if ( this.settings.focusInvalid ) {

try {

$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])

.filter(":visible")

.focus()

.trigger("focusin");

/*  扩展方法failedCallback */

var failedCallback=this.settings.failedCallback;  

           if($.type(failedCallback)==='function'){  

               failedCallback(this.errorList);  

             } 

} catch(e) {


}

}

}



使用  

 $('#editForm').validate(

      {   

           rules:..... ,

           failedCallback:function(errorList){

      // 循环验证失败元素   

for(var i=0; i<errorList.length; i++){

       var  element=errorList[0].element;

       if($(element).attr("name") == 'birthday'){

          ........................................ 

           }

        }

           }   

     } 

);