jQuery Validate Plugin Чекбокс Правила группы - PullRequest
0 голосов
/ 15 марта 2011

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

<input type="checkbox" name="test[name1]" id="testid1" class="required">
<input type="checkbox" name="test[name2]" id="testid2" class="required">

И JS:

$("#myform").validate({
    groups: {
        checkboxes: "test[name1] test[name2]"
    }
}

Мне удалось сузить проблему до того факта, что в именах входов есть "[]", что, как я полагаю, связано с разбором строк в именах. Платформа, которую я использую, однако, требует использования скобок. Кажется, что это может быть распространенной проблемой, так что, возможно, кто-то еще сталкивался с этим и может помочь мне.

Для справки я пробовал:

checkboxes: "testname1 testname2"

работает, но не может его использовать.

checkboxes: "'test[name1]' 'test[name2]'"

не работает.

Ответы [ 3 ]

0 голосов
/ 01 октября 2012

Смысл атрибута name состоит в том, чтобы сгруппировать связанные флажки / переключатели вместе.Таким образом, группа флажков, которые действуют как группа, должна иметь одинаковые атрибуты name (но каждый с уникальными атрибутами id).При условии, что у вас есть это:

<input type="checkbox" name="test" id="testid1">
<input type="checkbox" name="test" id="testid2">

, тогда будет работать следующий JS:

$(formSelector).validate({
  rules: {
    test: "required"
  },
  messages:
    test: "Please select an item"
  }
});
0 голосов
/ 26 марта 2013

Проверка группы флажков Javascript без jQuery:

<script>    
    function checkboxGroup(frm) {
        // set send to false first
        bSend = false;
        // array of all inputs in the form
        aInputs = frm.getElementsByTagName("input");
        // loop through the inputs array
        for(i=0;i<aInputs.length; i++) {
            if(
                aInputs[i].getAttribute("type")=="checkbox"
                &&
                aInputs[i].getAttribute("name")=="test[]"
            ) {
                // If one of the checkeboxes named test[]
                // is checked, bSend will be set true           
                if(aInputs[i].checked) bSend = true;
            }
        }
        // If none of the checkboxes named test[] are checked
        // bSend will still be false hence not send the form
        return bSend;
    }
</script>

Форма HTML, которую я использовал для тестирования:

<form method="post" onsubmit="return checkboxGroup(this)">
    <input type="checkbox" name="test[]" value="name 1">
    <input type="checkbox" name="test[]" value="name 2">
    <input type="checkbox" name="test[]" value="name 3">
    <input type="checkbox" name="mom[]" value="name gg">
    <input type="submit" value="test">
</form>
0 голосов
/ 17 июня 2011

Я собираюсь догадаться, что ваша платформа основана на PHP.Сочетание PHP для использования [] для создания массивов в отправленных данных формы удобно до определенного момента, но эти символы недопустимы в атрибутах id и name.

Мне просто нужно было сделать то же самое, и я нашелпростой ответ похоронен в http://docs.jquery.com/Plugins/Validation/Methods/minlength#length

test: { minLength: 1 }

Если все ваши флажки имеют идентичные атрибуты имени ("test", а не "test [x]").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...