18

我在页面上使用 jQuery 验证。在调用 invalidHandler 期间,我希望能够访问所有未通过验证的表单元素的列表。

此函数作为选项之一传递给 jQuery.validate() 方法...

invalidHandler: function (form) {
    var validator = $("#AddEditFinancialInstitutionForm").validate();
    validator.showErrors();
    console.log(validator);
}

我试图在生成的验证器对象中的某处找到此信息,但我似乎找不到它。还有其他方法可以访问此信息吗?

谢谢

4

3 回答 3

34

在 中invalidHandler,您被传递了两个参数,ajQuery.Eventvalidator对象。您不需要在您的 invalidHandler 中调用 validate 来获取 validate 对象。此外,验证器对象有一个名为errorListand的属性errorMap,其中包含您要查找的信息。

invalidHandler: function(e,validator) {
    //validator.errorList contains an array of objects, where each object has properties "element" and "message".  element is the actual HTML Input.
    for (var i=0;i<validator.errorList.length;i++){
        console.log(validator.errorList[i]);
    }

    //validator.errorMap is an object mapping input names -> error messages
    for (var i in validator.errorMap) {
      console.log(i, ":", validator.errorMap[i]);
    }
}
于 2012-07-25T15:12:04.943 回答
3

如果您使用的是默认错误类并且只找到无效元素,请使用

 $(this).find("input.error") // inside invalidHandler
于 2012-07-25T03:42:47.220 回答
1

使用它来获取错误字段的整个元素及其属性。

  var formerrorList = $("#FORM_ID_HERE").data("validator").errorList;
        $.each(formerrorList, function (key, value) {
            console.log(formerrorList[key].element.id);
        });
于 2018-10-26T05:03:43.957 回答