метод Validate имеет few options to support re-validating on change, а именно это:
$(".selector").validate({
onfocusout: true,
onkeyup: true,
onclick: true,
//The rest of your options
});
все это по умолчанию false
, но должна предложить функциональность вы упоминаете. в вопросе.
Обновление на основе комментариев: Предоставлено простая форма теста, как это:
<form action="get">
<div><input type="text" name="part1" class="part"></div>
<div><input type="text" name="part2" class="part"></div>
<div><input type="text" name="part3" class="part"></div>
<div><input type="text" name="part4" class="part"></div>
<input type="submit" value="Submit" />
</form>
JQuery будет следующим:
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
var valid = $(options[1], element.form).filter(function() {
return $(this).val();
}).length >= options[0];
if(!$(element).data('reval')) {
var fields = $(options[1], element.form);
fields.data('reval', true).valid();
fields.data('reval', false);
}
return valid;
}, jQuery.format("Please fill out at least {0} of these fields."));
$("form").validate({
rules: {
part1: { require_from_group: [2,".part"] },
part2: { require_from_group: [2,".part"] },
part3: { require_from_group: [2,".part"] },
part4: { require_from_group: [2,".part"] }
}
});
Вы можете играть с демо здесь, посмотреть, это то, что вы после: http://jsfiddle.net/mhmBs/
Метод здесь использует .data()
, чтобы элемент знал, что вызывают бесконечный цикл. Фактический элемент, который редактируется, при размытии (обычная причина для триггеров проверки) повторно подтверждает только других элементов в селекторе, который вы указали в группе, поэтому не вся форма, как мой комментарий ... это только срабатывает на минимальное количество элементов.
Это до или после отправки формы? – staterium
@ Ravish - в основном после того, как предполагалось, что представление было заблокировано и предоставлены ошибки, но раньше тоже было бы хорошо. –
У вас есть ссылка на страницу с примерами? – PetersenDidIt