如何在任何一个子复选框取消选中时,取消全选复选框的选中状态?(涉及IT技术)

3
当任意一个子复选框取消选择时,我该如何取消选择所有选择复选框(父级)!
从代码片段中,当我们选择所有复选框并且取消选择用户时,应取消选择所有复选框(因为未选中所有复选框)。

$(document).ready(function() {
  $('#Admin').click(function() {
    var checked = $(this).prop('checked');
    $('#tab-10').find('input:checkbox').prop('checked', checked);
  });

  $('#Sales').click(function() {
    var checked = $(this).prop('checked');
    $('#tab-20').find('input:checkbox').prop('checked', checked);
  });  
    // i have so may like this in that case how can i do that.?
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav nav-tabs">
  <li class="active"><a data-toggle="tab" href="#tab-10"> First </a></li>
  <li class=""><a data-toggle="tab" href="#tab-20"> Second </a></li>

</ul>

<div class="tab-content vehicle">
  <div id="tab-10" class="tab-pane active">
    <div class="panel-body">
      <div class="row">
        <div class="col-md-3">
          <div class="checkbox">
            <label><input type="checkbox" id="Admin"><b>Select All</b></label>
          </div>
        </div>
        <div class="col-md-3">
          <div class="checkbox">
            <label><input type="checkbox" name="pages[]" value="2">Dealerships</label>
          </div>
        </div>

        <div class="col-md-3">
          <div class="checkbox">
            <label><input type="checkbox" name="pages[]" value="23">Users</label>
          </div>
        </div>

        <div class="col-md-3">
          <div class="checkbox">
            <label><input type="checkbox" name="pages[]" value="59">Third-Party Exports</label>
          </div>
        </div>

      </div>
    </div>
  </div>
  
<br><br>

<div id="tab-20" class="tab-pane ">
 <div class="panel-body">
  <div class="row">
   <div class="col-md-3">
    <div class="checkbox">
     <label><input type="checkbox" id="Sales"/><b>Select All</b></label>
    </div>
   </div>
   <div class="col-md-3">
    <div class="checkbox">
     <label><input type="checkbox" name="Second[]" value="2">Second tab 1</label>
    </div>
   </div>
   
   <div class="col-md-3">
    <div class="checkbox">
     <label><input type="checkbox" name="Second[]" value="23">Second tab 1</label>
    </div>
   </div>
  </div>
 </div>
</div>

  
  
  
  
  
  
  
  
</div>


1
Abdul Waheed,你检查了答案吗? - Alive to die - Anant
1
具体是什么出了问题?你能说一下吗?为什么更新这么晚? - Alive to die - Anant
Abdul Waheed,你能不能检查一下我的代码。我已经根据你的最新HTML进行了更改。 - Alive to die - Anant
3个回答

3

实际上,您还没有针对您的问题进行任何编码(即当您取消选中所有复选框而非全选时,使全选未选中)。

请按以下方式操作:

$(document).ready(function() {
  $('#Admin').click(function() {
    var checked = $(this).prop('checked');
    $('#tab-10').find('input:checkbox').prop('checked', checked);
  });
  $('#Sales').click(function() {
    var checked = $(this).prop('checked');
    $('#tab-20').find('input:checkbox').prop('checked', checked);
  });

  $('.tab-pane').find('input:checkbox:not(:first)').click(function() {
    if (!$(this).is(':checked')) {
      $(this).closest('.tab-pane').find('input:checkbox:first').prop('checked', false);
    } else {
      var checkbox_length = $(this).closest('.tab-pane').find('input:checkbox:not(:first)').length;
      var checked_check_box_length = $(this).closest('.tab-pane').find('input:checkbox:not(:first):checked').length;
      if (checkbox_length == checked_check_box_length) {
        $(this).closest('.tab-pane').find('input:checkbox:first').prop('checked', true);
      }
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav nav-tabs">
  <li class="active"><a data-toggle="tab" href="#tab-10"> First </a></li>
  <li class=""><a data-toggle="tab" href="#tab-20"> Second </a></li>

</ul>

<div class="tab-content vehicle">
  <div id="tab-10" class="tab-pane active">
    <div class="panel-body">
      <div class="row">
        <div class="col-md-3">
          <div class="checkbox">
            <label>
              <input type="checkbox" id="Admin"><b>Select All</b></label>
          </div>
        </div>
        <div class="col-md-3">
          <div class="checkbox">
            <label>
              <input type="checkbox" name="pages[]" value="2">Dealerships</label>
          </div>
        </div>

        <div class="col-md-3">
          <div class="checkbox">
            <label>
              <input type="checkbox" name="pages[]" value="23">Users</label>
          </div>
        </div>

        <div class="col-md-3">
          <div class="checkbox">
            <label>
              <input type="checkbox" name="pages[]" value="59">Third-Party Exports</label>
          </div>
        </div>

      </div>
    </div>
  </div>

  <br>
  <br>

  <div id="tab-20" class="tab-pane ">
    <div class="panel-body">
      <div class="row">
        <div class="col-md-3">
          <div class="checkbox">
            <label>
              <input type="checkbox" id="Sales" /><b>Select All</b></label>
          </div>
        </div>
        <div class="col-md-3">
          <div class="checkbox">
            <label>
              <input type="checkbox" name="Second[]" value="2">Second tab 1</label>
          </div>
        </div>

        <div class="col-md-3">
          <div class="checkbox">
            <label>
              <input type="checkbox" name="Second[]" value="23">Second tab 1</label>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

Working fiddle:- http://jsfiddle.net/am6rgdw1/


2
当我取消选中其中一个复选框时,它可以工作。但是当我逐个勾选所有复选框时,“全选”未被选中。 - nazmul.3026
1
当我选中“全选”复选框时,它可以正常工作。但是当我逐个勾选所有复选框时,“全选”复选框没有被选中。如果能够解决这个问题,那就是完美的解决方案了。 :) - nazmul.3026
@AbdulWaheed 很高兴能帮助你。:):) - Alive to die - Anant
@AlivetoDie,您能否请检查一下这个链接:https://stackoverflow.com/questions/47055009/check-uncheck-all-checkboxes-with-php - Mr world wide

2

把以下代码添加到您的JS中:

$('input[name="pages[]"]').click(function(){
  $('input[name="pages[]"]').each(function() { 
    var checked = $(this).attr('checked');
    if(!checked){
      $('#Admin').attr('checked', false);
      return false;
    }
  });
});

1
对于动态标签ID,我是这样做的:
这是我的HTML和PHP代码:
<div class="tab-content vehicle">
<?php  $active='active'; foreach ( $check_menu as $y) {?>
<div id="tabs-<?=$y?>" class="tab-pane <?=$active?>">
<div class="panel-body">
<div class="row">
    <div class="col-md-3">
        <div class="checkbox">
            <label>
                <input type="checkbox" class="SelectAll_Dynamic" id="<?=$y?>" />
                <b>Select All</b>
            </label>
        </div>
    </div>
    <?php  foreach($menus as $x): if ($x['parent_id'] ==$y):?>
    <div class="col-md-3">
        <div class="checkbox">
            <label>
                <input type="checkbox" name="pages[]" value="<?=$x['id']?>"
                <?php   if (array_search($x['id'],$my_menu,true))
                    {
                        echo "checked ";
                    }
                ?>
            ><?=$x['name']?></label>
        </div>
    </div>
    <?php  endif; $active="";
    endforeach;?>
</div></div>
</div>
<?php } ?>
</div>

这是我的脚本:
<script>
    $(document).ready(function() {
        $('.SelectAll_Dynamic').click(function() {
            var select_Id = this.id;
            var checked = $(this).prop('checked');
            $('#tabs-'+select_Id).find('input:checkbox').prop('checked', checked);
            alert(select_Id);
        });

        $('.tab-pane').find('input:checkbox:not(:first)').click(function() {
            if (!$(this).is(':checked')) {
                $(this).closest('.tab-pane').find('input:checkbox:first').prop('checked', false);
                } else {
                var checkbox_length = $(this).closest('.tab-pane').find('input:checkbox:not(:first)').length;
                var checked_check_box_length = $(this).closest('.tab-pane').find('input:checkbox:not(:first):checked').length;
                if (checkbox_length == checked_check_box_length) {
                    $(this).closest('.tab-pane').find('input:checkbox:first').prop('checked', true);
                }
            }
        });
    });

</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接