ページでjQuery検証を使用しています。 invalidHandlerの呼び出し中に、検証に失敗したすべてのフォーム要素のリストにアクセスできるようにしたいと思います。
この関数は、オプションの1つとしてjQuery.validate()メソッドに渡されています。
invalidHandler: function (form) {
var validator = $("#AddEditFinancialInstitutionForm").validate();
validator.showErrors();
console.log(validator);
}
結果のバリデータオブジェクトのどこかでこの情報を見つけようとしていますが、見つからないようです。この情報にアクセスする別の方法はありますか?
ありがとう
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]);
}
}
デフォルトのエラークラスを使用していて、無効な要素のみが見つかった場合は、
$(this).find("input.error") // inside invalidHandler
これを使用して、エラーが発生したフィールドの要素全体とその属性を取得します。
var formerrorList = $("#FORM_ID_HERE").data("validator").errorList;
$.each(formerrorList, function (key, value) {
console.log(formerrorList[key].element.id);
});