У меня есть что-то вроде этого:
<form>
<input name='roles' type='checkbox' value='1' />
<input name='roles' type='checkbox' value='2' />
<input name='roles' type='checkbox' value='3' />
<input name='roles' type='checkbox' value='4' />
<input name='roles' type='checkbox' value='5' />
<input type='submit' value='submit' />
<form>
Я хотел бы проверить тот по крайней мере один флажок (роли), должен быть проверен, действительно ли это возможно с jquery.validate?
Плагин проверки будет проверять только текущий / сфокусированный элемент. Поэтому вам нужно будет добавить настраиваемое правило в средство проверки для проверки всех флажков. Аналогично ответу выше.
$.validator.addMethod("roles", function(value, elem, param) {
return $(".roles:checkbox:checked").length > 0;
},"You must select at least one!");
И по элементу:
<input class='{roles: true}' name='roles' type='checkbox' value='1' />
Кроме того, вы, вероятно, обнаружите, что отображение сообщения об ошибке недостаточно. Выделен только 1 флажок и отображается только 1 сообщение. Если вы щелкните другой отдельный флажок, который затем вернет действительный для второго флажка, исходный флажок все равно будет помечен как недопустимый, и сообщение об ошибке все равно будет отображаться, несмотря на то, что форма действительна. В этом случае я всегда прибегал к простому отображению и скрытию ошибок. В этом случае валидатор заботится только о том, чтобы не отправлять форму.
Другой вариант, который у вас есть, - это написать функцию, которая будет изменять значение скрытого ввода на «действительное» при щелчке флажка, а затем прикреплять правило проверки к скрытому элементу. Это будет проверяться только в событии onSubmit, но будет отображать и скрывать сообщения в соответствующее время. Это почти единственные параметры, которые вы можете использовать с плагином проверки.
Надеюсь, это поможет!
Ммм, сначала ваши атрибуты id должны быть уникальными, ваш код, скорее всего, будет
<form>
<input class='roles' name='roles' type='checkbox' value='1' />
<input class='roles' name='roles' type='checkbox' value='2' />
<input class='roles' name='roles' type='checkbox' value='3' />
<input class='roles' name='roles' type='checkbox' value='4' />
<input class='roles' name='roles' type='checkbox' value='5' />
<input type='submit' value='submit' />
</form>
Для вашей проблемы:
if($('.roles:checkbox:checked').length == 0)
// no checkbox checked, do something...
else
// at least one checkbox checked...
НО, помните, что проверка формы JavaScript является только ориентировочной, все проверки ДОЛЖНЫ выполняться на стороне сервера.