Если у меня проверяется скрытый элемент, я добавляю пользовательский атрибут 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
, в котором вы можете переопределить функции по умолчанию, такие как highlight () и 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);
}
}
});
Это переопределит функции по умолчанию, не изменяя базовый скрипт.