我正在使用jquery form validation plugin来验证长格式。如果用户提交的表单包含多个无法验证的字段,则光标将返回到最后一个未通过的字段。相反,我希望光标以验证失败的形式返回到第一个字段。我不想重写插件,而是要覆盖focusInvalid,它嵌套在“ prototype:{...}”中:

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({. . .});


有指针吗?

最佳答案

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

下面的例子:

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

10-06 01:49