如果未选中列表中的一个,如何取消选中复选框?

时间:2016-01-14 08:26:10

标签: javascript jquery html checkbox

我正在尝试检查一个复选框(检查列表中的所有其他复选框,并取消选中列表中的一个未选中。现在只有第一个我的意思是一个复选框检查列表中的所有剩余复选框正在发生但是反之亦然我的意思是取消选中即使未经检查的列表中的一个不能正常工作。我怎样才能实现呢?

<label><input type="checkbox" name="sample" class="selectall"/> Select all</label>

<div id="checkboxlist">
<label><input type="checkbox" name="sample"/>checkbox1</label><br/>
<label><input type="checkbox" name="sample"/>checkbox2</label><br />
<label><input type="checkbox" name="sample"/>checkbox3</label><br />
<label><input type="checkbox" name="sample"/>checkbox4</label><br />

 </div> 

Fiddle.

4 个答案:

答案 0 :(得分:6)

我会这样做:

$('.selectall').on('change', function(e) {
    var $inputs = $('#checkboxlist input[type=checkbox]');
    if(e.originalEvent === undefined) {
        var allChecked = true;
        $inputs.each(function(){
            allChecked = allChecked && this.checked;
        });
        this.checked = allChecked;
    } else {
        $inputs.prop('checked', this.checked);
    }
});

$('#checkboxlist input[type=checkbox]').on('change', function(){
    $('.selectall').trigger('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label><input type="checkbox" name="sample" class="selectall"/> Select all</label>

<div id="checkboxlist">
    <label><input type="checkbox" name="sample"/>checkbox1</label><br/>
    <label><input type="checkbox" name="sample"/>checkbox2</label><br />
    <label><input type="checkbox" name="sample"/>checkbox3</label><br />
    <label><input type="checkbox" name="sample"/>checkbox4</label><br />
    
</div>

编辑:e.isTrigger符合e.originalEvent === undefinedA. Wolff'scommented below建议{/ 3}}。

答案 1 :(得分:2)

你可以像下面这样做。如果取消选中checkbox,则在#checkboxlist下为checkbox添加其他点击事件,然后取消选中.selectall

$('#checkboxlist input[type=checkbox]').click(function(){
   if (!$(this).is(':checked')) {
       $('.selectall').prop('checked', false);
   }
});

DEMO

答案 2 :(得分:0)

使用验证

查看此Demo ..
<input type="checkbox" id="anchor-from"/>main

<input type="checkbox" class="checkall" id="period-daily" disabled />CheckBox2
<input type="checkbox" class="checkall" id="period-weekly"disabled />CheckBox3
<input type="checkbox" class="checkall" id="period-weekly2"disabled />CheckBox3
<input type="checkbox" class="checkall" id="period-weekly3"disabled />CheckBox3
<input type="checkbox" class="checkall" id="period-weekly4"disabled />CheckBox3

的js

$("#anchor-from").change(function(){
                        if($('#anchor-from').is(':checked'))
                        {
                          $(".checkall").attr("disabled", false); 
                          $(".checkall").prop("checked", true); 

                        }
                        else
                        {
                        $(".checkall").attr("disabled", true);
                         $(".checkall").prop("checked", false); 
                        }



                    });

                    $(".checkall").change(function(){
                    if($('.checkall').not(':checked'))
                    {
                          $(".checkall").attr("disabled", true); 
                          $(".checkall").prop("checked", false); 
                          $("#anchor-from").prop("checked", false); 
                    }
                 });

答案 3 :(得分:0)

 $(document).ready(function () {
       $('input[name=sample]').click(function() {

           if ($(this).hasClass('selectall')) {
               if ($(this).prop('checked') == true) {
                   $('#checkboxlist input[name=sample]').prop('checked', true);
               }
               else {
                   $('#checkboxlist input[name=sample]').prop('checked', false);
               }

           }
           else {
               if ($('#checkboxlist input[name=sample]:checked').length == $('#checkboxlist input[name=sample]').length) {
                   $('.selectall').prop('checked', true)
               }
               else {
                   $('.selectall').prop('checked', false)
               }
           }

       });

   });