确定是否检查了jQuery对象中的所有复选框,返回为boolean

时间:2010-09-15 16:46:44

标签: javascript jquery if-statement boolean

嘿所有人。我一直在努力解决这个问题。

我创建了一个复选框的jQuery对象,并将其存储在变量中:

$group1 = $('#checkbox1,#checkbox2,#checkbox3,#checkbox4');

除非检查该组中的所有复选框,否则用户无法继续。

我一直在使用if语句与.is(':checked')结合来查找布尔值:

if( $group1.is(':checked') ){
  //continue is OK
}

...但如果在组内选中任何复选框,则.is(':checked')将返回TRUE。实质上,.is(':checked')对$ group1中的选定元素执行OR运算。我正在寻找AND操作,因此必须检查所有选定的元素以返回TRUE。是否有jQuery函数可以执行此操作或其他解决方法?

5 个答案:

答案 0 :(得分:21)

@Adam关闭了一点

if( $group1.filter(':not(:checked)').length === 0){
  //continue is OK
}

答案 1 :(得分:2)

修正:

您可以filter仅获取 not checked 元素,然后检查是否有任何元素仍在集合中,如果没有检查组中的所有元素:

if( $group1.filter(':not(:checked)').length === 0){
  //continue is OK
}

答案 2 :(得分:1)

我建议你给你的复选框一个班级

 var len = $('.check_needed').length;
 var chk = $('.check_needed:checked').length;
 if (len == check){
    //carry on
 }else{
    // go home
 }

答案 3 :(得分:1)

我认为你需要这样的东西:

$(document).ready(function(){
   var checked = true;

   $('input:checkbox').each(function(){
      if(checked){
         checked = $(this).is(':checked');
      }
   });
});

如果未选中任何一个,则应设置checked = false。

答案 4 :(得分:0)

您也可以使用

$(函数(){

// add multiple select / deselect functionality
$("#selec_all_chk").click(function () {
      $('.chk_class').attr('checked', this.checked);
});

// if all checkbox are selected, check the selectall checkbox
// else uncheck
$(".chk_class").click(function(){

    if($(".chk_class").length == $(".chk_class:checked").length) {
        $("#selec_all_chk").attr("checked", "checked");
    } else {
        $("#selec_all_chk").removeAttr("checked");
    }

});

});