重写的jquery验证插件内的一个函数(overriding a function within t

2019-09-21 21:25发布

我使用jQuery的表单验证插件来验证长格式。 如果用户提交表单与多个字段无法验证,光标返回到最后一个字段未通过。 相反,我希望光标在验证失败的形式返回到第一场。 而不是修改插件,我想重写focusInvalid,这是嵌套在“原型:{...}”:

focusInvalid: function() {
    if( this.settings.focusInvalid ) {
        try {
            $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").focus();
        } catch(e) {
            // ignore IE throwing errors when focusing hidden elements
        }
    }
},

我已经试过以下中加入我自己的focusInvalid的版本,但我一直没能得到那个工作:

$("form#user-register").validate({. . .});

任何指针?

Answer 1:

您可以禁用与第一无效输入的选择focusInvalid选项。 然后,您可以使用invalidHandler选项来设置选择在表单中的第一个元素的自定义功能。 该invalidHandler选项是,当一个无效的表单提交插件调用函数。

实施例下面:

$("form#user-register").validate({
     invalidHandler: function(form, validator){
         $(validator.invalidElements()[0]).focus();
     },
     focusInvalid:false
});


文章来源: overriding a function within the jquery validation plugin