Определите, проверяются ли все флажки в объекте jQuery, возвращаются как логические

Эй, все. Я пытался понять это на некоторое время.

Я создаю объект jQuery для флажков и сохраняю его в переменной:

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

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

Я использовал оператор if в сочетании с .is(':checked'), чтобы найти логическое значение:

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

... но .is(':checked') вернет TRUE, если в группе отмечены флажки. По существу, .is(':checked') выполняет операцию ИЛИ для выбранных элементов в $group1. Я ищу операцию AND, поэтому все выбранные элементы должны быть отмечены, чтобы вернуть TRUE. Есть ли функция jQuery, которая делает это, или другое обходное решение?

Ответ 1

@Adam выключен только немного

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

Ответ 2

Исправлено:

Вы можете filter получить только те элементы, которые not checked, а затем проверить, нет ли каких-либо элементов в коллекции, если нет, все элементы в группе проверяются:

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

Ответ 3

Я бы предположил, что вы даете свои флажки классу, а затем

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

Ответ 4

Я думаю, вам нужно что-то вроде:

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

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

Это должно установить checked = false, если какой-либо из них не установлен.

Ответ 5

Вы также можете использовать

$(функция() {

// 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");
    }

});

});