Как проверить форму с несколькими флажками, чтобы установить хотя бы один - PullRequest
40 голосов
/ 08 октября 2009

Я пытаюсь проверить форму с помощью плагина validate для jquery. Я хочу потребовать, чтобы пользователь установил хотя бы один флажок в группе для отправки формы. Вот мой код jquery:

$().ready(function() {
$("#subscribeForm").validate({
   rules:   { list: {required: "#list0:checked"} },
   messages:  { list:  "Please select at least one newsletter"}                                                        
 });
 });

и вот HTML-форма:

<form action="" method="GET" id="subscribeForm">
<fieldset id="cbgroup">
    <div><input name="list" id="list0" type="checkbox"  value="newsletter0" >zero</div>
    <div><input name="list" id="list1" type="checkbox"  value="newsletter1" >one</div>
    <div><input name="list" id="list2" type="checkbox"  value="newsletter2" >two</div>
</fieldset>
<input name="submit" type="submit"  value="submit">

Проблема в том, что форма отправляется, даже если ничего не проверено. Как я могу решить это?

Ответы [ 11 ]

0 голосов
/ 30 сентября 2010

Как насчет этого

$.validate.addMethod(cb_selectone,
                   function(value,element){
                           if(element.length>0){
                               for(var i=0;i<element.length;i++){
                                if($(element[i]).val('checked')) return true;
                               }
                           return false;
                           }
                            return false;
                  },
                  'Please select a least one')

Теперь вы можете сделать

$.validate({rules:{checklist:"cb_selectone"}});

Вы можете даже пойти дальше, указав минимальное число для выбора с третьим параметром в функции обратного вызова. Я еще не проверял его, поэтому скажите, работает ли он.

...