jQuery проверяет проверку по крайней мере один флажок

У меня есть что-то вроде этого:

<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?

56
задан Zoe 13 March 2019 в 06:21
поделиться

2 ответа

Плагин проверки будет проверять только текущий / сфокусированный элемент. Поэтому вам нужно будет добавить настраиваемое правило в средство проверки для проверки всех флажков. Аналогично ответу выше.

$.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, но будет отображать и скрывать сообщения в соответствующее время. Это почти единственные параметры, которые вы можете использовать с плагином проверки.

Надеюсь, это поможет!

40
ответ дан 26 November 2019 в 17:04
поделиться

Ммм, сначала ваши атрибуты 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 является только ориентировочной, все проверки ДОЛЖНЫ выполняться на стороне сервера.

13
ответ дан 26 November 2019 в 17:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: