如何使用jQuery Validator獲取所有無效元素?
這是我想解決這個問題:
你沒有解釋你想要做什麼。
你知道一些更好的方法來實現它嗎?
你還沒有解釋什麼是你想完成什麼,或爲什麼the example in the documentation從來沒有嘗試過。
通常,將其自定義的invalidHander
回調放在.validate()
方法內。你跟着the documentation?
$("#myform").validate({
// other rules, options, callbacks, etc.,
invalidHandler: function(event, validator) {
var errors = validator.numberOfInvalids(); // <- NUMBER OF INVALIDS
console.log(errors);
}
});
後正確初始化使用.validate()
法的形式,你會得到殘疾人的數量,當表單驗證第一次被觸發。
DEMO:http://jsfiddle.net/t2vdfjyn/
然而,如果你想殘疾人的數量產生的或現有的錯誤被清除後,每一個新的錯誤進行自我更新,那麼invalidHandler
沒有使用正確的功能;你需要the showErrors
callback而不是...
$("#myform").validate({
// other rules, options, callbacks, etc.,
showErrors: function(errorMap, errorList) {
var errors = this.numberOfInvalids(); // <- NUMBER OF INVALIDS
console.log(errors);
this.defaultShowErrors(); // <- ENABLE default MESSAGES
}
});
DEMO 2:http://jsfiddle.net/t2vdfjyn/1/
編輯:
代碼中的註釋:
//do something for each invalid object
做一些對於每個無效的對象是插件自動處理的內容 ...它基本上是這個插件設計的後半部分。如果你準確地解釋什麼你想要爲每個無效對象做什麼,我可以告訴你哪個jQuery Validate option可以用於此目的。
編輯2:
我已經標籤頁,我需要打開發生錯誤的一些特定的標籤。爲了做到這一點,我需要獲得這些對象的父對象。
The showErrors
callback function有兩個參數...
好像您需要了解此處將包含在輸入要素的所有信息。一旦你有了輸入元素的name
,你可以使用jQuery來獲取父元素。
showErrors: function(errorMap, errorList) {
var errors = this.numberOfInvalids(); // <- NUMBER OF INVALIDS
$("#num_invalids").html(errors);
console.log(errorMap);
$.each(errorMap, function(key, value) {
console.log(key); // <- name of invalid field
var parent = $('[name="' + key + '"]').parent();
console.log(parent); // <- parent object
});
this.defaultShowErrors(); // <- ENABLE default MESSAGES
}
DEMO 3:http://jsfiddle.net/t2vdfjyn/2/
什麼,我試圖做的正是我寫的(我想獲得使用jQuery驗證所有無效元素)。換句話說:我想要獲得所有內部有一些不允許的值的輸入(如HTML對象)。 – Piotrek
@ Ludwik11,*「我想要做的就是我寫的東西」*不完全。如果你解釋你想對每個無效對象做什麼,我可以告訴你哪個插件選項可以爲你處理。查看我的編輯。 – Sparky
好,問題已更新。抱歉我的帖子不準確。 – Piotrek