Проверка групп флажков с использованием jquery - PullRequest
1 голос
/ 25 марта 2010

Если у меня есть группы флажков, например, так:

<input type="checkbox" name"checkboxes1" value="#value1">
<input type="checkbox" name"checkboxes1" value="value2">
<input type="checkbox" name"checkboxes1" value="#value3">

<input type="checkbox" name"checkboxes2" value="value1">
<input type="checkbox" name"checkboxes2" value="#value2">
<input type="checkbox" name"checkboxes2" value="#value3">

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

  • Все флажки в группе, которые начинаются с # в их значении, отмечены
  • Все флажки в группе, которые не начинаются с # в их значении, не являютсяфлажок

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

Спасибо:)

Ответы [ 2 ]

1 голос
/ 25 марта 2010

Вы можете выбрать атрибут с шаблоном [attr ^ = \ #] . Итак, вы можете написать что-то вроде:

<html>
<head>
  <script src="./lib/jquery/jquery-1.3.2.js"></script>
  <script>
    var checkall = function() {

    var withHashAllChecked = true;
    var withoutHashAllChecked = true;

$("input.cb1:checkbox[value^=#]").each(function() {
    if (!this.checked) {
        withHashAllChecked = false;
    }
});


$("input.cb1:checkbox:not([value^=#])").each(function() {
    if (!this.checked) {
        withoutHashAllChecked = false;
    }
});

var result = withHashAllChecked && (!withoutHashAllChecked);
alert(result);

};

$(function() {
    $("input").click(checkall);
});
  </script>
</head>
<body>
<input class="cb1" type="checkbox" name"checkboxes1" value="#value1">#1</input>
<input class="cb1" type="checkbox" name"checkboxes1" value="value2">2</input>
<input class="cb1" type="checkbox" name"checkboxes1" value="#value3">#3</input>

<input class="cb2" type="checkbox" name"checkboxes2" value="value1">1</input>
<input class="cb2" type="checkbox" name"checkboxes2" value="#value2">#2</input>
<input class="cb2" type="checkbox" name"checkboxes2" value="#value3">#3</input>

</body>
</html>

EDIT

Обновлен полный рабочий код. Это только проверка флажков с классом cb1, но только для того, чтобы дать вам представление о том, как этого добиться. Я должен извиниться, что у исходного кода есть некоторая проблема, которую я не проверил. В любом случае, я пробую приведенный выше код, и все будет хорошо (если вы измените ссылку на каталог jquery).

0 голосов
/ 25 марта 2010
var checked = $('input:checkbox:checked[name=checkboxes1][value^=#]').length;
var notchecked = $('input:checkbox:not(:checked)[name=checkboxes1][value^=#]').length;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...