Я понимаю, что это более старый вопрос, но я считаю, что этот ответ стоит читателю, поскольку jQuery Validate ( начиная с версии плагина 1.9.0 ) теперь игнорирует скрытые поля по умолчанию .
В основном это jQuery, в котором удалены все ненужные строки, а .live()
обновлен до более современного jQuery .on()
.
$(document).ready(function () {
$('input:checked').parent().addClass("visible");
$(':checkbox').on("change", function () {
$(this).parent().toggleClass("visible");
});
// Initialize Validate plugin; .validate() called ONCE
$('form').validate({
ignore: ":hidden" // only use this option for plugin version below 1.9.0
});
});
Чтобы это работало, к вашему HTML должны быть применены следующие изменения:
1) select
элемент нуждается в атрибуте name
, иначе плагин Validate его игнорирует.
2) select
элементу необходимо class='required'
для назначения правила. (Это теперь автоматически игнорируется всякий раз, когда элемент скрыт.)
3) Сначала option
требуется атрибут value=""
, чтобы сообщить плагину, что первый элемент недопустим.
<select class="required" name="suboption1">
<option selected="selected" value="">Select an option</option>
<option>Sub-Option 1</option>
...
</select>
Рабочая демоверсия: http://jsfiddle.net/ZLXuU/
Общие примечания:
1) Использование .validate()
до инициализация плагин ONCE в DOM ready.
2) Больше никогда не нужно вызывать .validate()
, поскольку он только повторно инициализирует плагин. Используйте .valid()
до test валидности формы и вызывайте любые сообщения об ошибках.
3) ignore: ":hidden"
теперь является опцией по умолчанию для версии Validate 1.9.0 +