web-dev-qa-db-ja.com

jQuery検証-invalidHandlerのエラーフィールドのリストを取得します

ページでjQuery検証を使用しています。 invalidHandlerの呼び出し中に、検証に失敗したすべてのフォーム要素のリストにアクセスできるようにしたいと思います。

この関数は、オプションの1つとしてjQuery.validate()メソッドに渡されています。

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

結果のバリデータオブジェクトのどこかでこの情報を見つけようとしていますが、見つからないようです。この情報にアクセスする別の方法はありますか?

ありがとう

16
jdavis

invalidHandlerには、jQuery.Eventオブジェクトとvalidatorオブジェクトの2つの引数が渡されます。検証オブジェクトを取得するために、invalidHandler内でvalidateを呼び出す必要はありません。さらに、バリデータオブジェクトにはerrorListおよび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]);
    }
}
31
Ryley

デフォルトのエラークラスを使用していて、無効な要素のみが見つかった場合は、

 $(this).find("input.error") // inside invalidHandler
3
Jules

これを使用して、エラーが発生したフィールドの要素全体とその属性を取得します。

  var formerrorList = $("#FORM_ID_HERE").data("validator").errorList;
        $.each(formerrorList, function (key, value) {
            console.log(formerrorList[key].element.id);
        });
0
user3732708