在那裏我有正在驗證一個隱藏的元素,我添加了一個自定義屬性,data-val-visibleid
。然後,在jquery.validate.js
,我通過在這兩個功能的末尾添加以下修改highlight
和unhighlight
功能:
if ($(element).is(":hidden")) {
var targetId = $(element).attr("data-val-visibleid");
$("#" + targetId).addClass(errorClass).removeClass(validClass);
}
有些人不喜歡jquery.validate.js染指,但它通常是最容易的方法來實現這樣的自定義。
UPDATE
我做了一些研究,並發現jquery.validate有一個漂亮的setDefault
方法,在這裏你可以覆蓋默認的功能,如高亮()和unhighlight。在加載其他腳本後,將以下內容添加到您的頁面:
$.validator.setDefaults({
highlight: function (element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
if ($(element).is(":hidden")) {
var targetId = $(element).attr("data-val-visibleid");
$("#" + targetId).addClass(errorClass).removeClass(validClass);
}
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
if ($(element).is(":hidden")) {
var targetId = $(element).attr("data-val-visibleid");
$("#" + targetId).addClass(errorClass).removeClass(validClass);
}
}
});
這將覆蓋默認功能,而不更改基礎腳本。
在我的最後一個項目,我們不可能更新的jQuery或jQuery UI的,因爲有些人都已經對這些文件的太多的變化,所以我支持那些不喜歡在API文件改變..我是希望有一個更清潔的解決方案 – Anders
安德斯,我從來沒有感到太高興了修改核心jquery.validate文件,所以我進一步檢查,發現它有一個'setDefault'功能,這樣你就可以有一個包含外部腳本您的自定義覆蓋。 – counsellorben
酷,這就是我正在尋找! – Anders