使用jquery验证复选框组

时间:2010-03-25 10:02:54

标签: jquery jquery-selectors

如果我有像这样的复选框:

<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 个答案:

答案 0 :(得分:1)

您可以使用[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>

修改

更新了完整的工作代码。这只是检查类cb1的复选框,但只是为了让您了解如何实现。我必须道歉,原始代码有一些问题,我没有检查它。无论如何,我尝试上面的代码,它应该没问题(你应该修改jquery目录引用)。

答案 1 :(得分:0)

var checked = $('input:checkbox:checked[name=checkboxes1][value^=#]').length;
var notchecked = $('input:checkbox:not(:checked)[name=checkboxes1][value^=#]').length;