如何使用jQuery验证无效字段?

LA_*_*LA_ 49 jquery jquery-validate

focusInvalid选项,true默认情况下.但它只在表单提交发生时才有效.如果我使用valid方法验证表单,那么它不起作用.那么问题是如何在valid使用时关注无效字段?

请参阅此演示以了解其中的差异.只需按下那里的按钮.

Jam*_*son 57

随着invalidHandler您可以将焦点设置到失败的第一个元素:

$("#form").validate({
    onfocusout: false,
    invalidHandler: function(form, validator) {
        var errors = validator.numberOfInvalids();
        if (errors) {                    
            validator.errorList[0].element.focus();
        }
    } 
});
Run Code Online (Sandbox Code Playgroud)

  • jQuery validate选择第一个无效元素**或最后一个无效元素**.你的代码是我发现的唯一一个躲过这种烦恼的代码并总是选择第一个代码.谢谢! (3认同)
  • 是的,有很多影响jquery.validates焦点处理的snafus.它本身就像一个顶部,但当你开始添加响应式设计和更多jquery脚本时,焦点可能会有点偏离.好的脚本,谢谢发布它. (2认同)

Ror*_*san 53

首先,您需要将验证器保存到变量中,以便在单击处理程序中使用它:

var validator = $("#test-form").validate({ /* settings */ });
Run Code Online (Sandbox Code Playgroud)

然后在validate处理程序中,您可以focusInvalidvalidator变量中手动调用该函数:

  $("#validate").click(function() {
        if ($("#test-form").valid()) 
              alert("Valid!");
        else
              validator.focusInvalid();

        return false;
  });
Run Code Online (Sandbox Code Playgroud)