Определите, все ли флажки внутри объекта jQuery отмечены, возвращаются как логические - PullRequest
10 голосов
/ 15 сентября 2010

Привет всем.Я уже некоторое время пытаюсь это выяснить.

Я создаю объект-флажок 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, которая делает это, или другой обходной путь?

Ответы [ 5 ]

21 голосов
/ 15 сентября 2010

@ Адам выключен чуть-чуть

if( $group1.filter(':not(:checked)').length === 0){
  //continue is OK
}
2 голосов
/ 15 сентября 2010

Исправлено:

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

if( $group1.filter(':not(:checked)').length === 0){
  //continue is OK
}
1 голос
/ 15 сентября 2010

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

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

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

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

1 голос
/ 15 сентября 2010

Я бы посоветовал вам дать вашим флажкам класс тогда

 var len = $('.check_needed').length;
 var chk = $('.check_needed:checked').length;
 if (len == check){
    //carry on
 }else{
    // go home
 }
0 голосов
/ 05 декабря 2012

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

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

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

});

});

...