Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 确定是否选中jQuery对象中的所有复选框,返回为布尔值_Javascript_Jquery_If Statement_Boolean - Fatal编程技术网

Javascript 确定是否选中jQuery对象中的所有复选框,返回为布尔值

Javascript 确定是否选中jQuery对象中的所有复选框,返回为布尔值,javascript,jquery,if-statement,boolean,Javascript,Jquery,If Statement,Boolean,大家好。我一直在想这个问题 我创建了一个包含复选框的jQuery对象,并将其存储在一个变量中: $group1 = $('#checkbox1,#checkbox2,#checkbox3,#checkbox4'); 除非选中该组中的所有复选框,否则用户无法继续 我一直在使用if语句结合.is(':checked')来查找布尔值: if( $group1.is(':checked') ){ //continue is OK } …但是.is(':checked')将返回TRUE如果在组中选

大家好。我一直在想这个问题

我创建了一个包含复选框的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函数可以执行此操作或其他解决方法?

更正:

您可以只获取的元素,然后检查集合中是否还有元素,如果没有,则检查组中的所有元素:

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

我建议你给你的复选框上课

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

@亚当有点不舒服

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

我想你需要这样的东西:

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

   $('input:checkbox').each(function(){
      if(checked){
         checked = $(this).is(':checked');
      }
   });
});
如果未选中其中任何一项,则应将其设置为checked=false。

您也可以使用

$(函数(){


}))

adam的解决方案基本上是相同的编辑:如果所有复选框都必须选中,那么,
$group1.length==$group.filter(“:checked”)。length可能更合适,但这并不能解决他的问题……他不想看是否有复选框被选中,而是想看是否所有复选框都被选中。(尽管这是一个简单的解决方法。)这里的逻辑将确保至少选中一个复选框,而不是确保所有复选框都选中。我建议您从变量名中去掉
$
。这在JavaScript中是不需要的,它旨在由机械生成的代码使用。您可以使用它(就像jQuery一样),但打破这个惯例不是一个好的做法。我建议您将类添加到复选框中,这样您就可以执行$('.className:checkbox'),或者,如果您想选择所有复选框,只需执行:$(':checkbox'))@这实际上是一种非常常见的jQuery约定,用于表示jQuery集合中的变量。我建议他继续使用它。它有助于代码的可读性,而且不会损害任何东西。@BBonifield:我不知道。谢谢你指出这一点!比我的解决方案优雅得多!这是一个很好的解决方案,非常有效。谢谢伯尼菲尔德和亚当,还有其他人!美好的干净简单。
// 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");
    }

});