【问题标题】:How to uncheck select all checkbox when any one of their child got deselected当他们的任何一个孩子被取消选中时如何取消选中全选复选框
【发布时间】:2017-11-01 05:55:39
【问题描述】:

当他们的任何一个子复选框被取消选中时,我如何取消选中全选checkbox(parent)

从 sn-p 当我们选择所有复选框时,当我们从他们中取消选择用户然后选择所有复选框时,应取消选中(因为未选中所有复选框)

$(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>

【问题讨论】:

  • Abdul Waheed 你检查答案了吗?
  • 究竟是什么不起作用?你能告诉。为什么这么晚才更新?
  • Abdul Waheed 你能检查一下我的代码吗?我已根据您的 Nw 更新 HTML 对其进行了更改

标签: javascript html checkbox checkboxlist


【解决方案1】:

实际上,您没有对您的问题进行任何编码(即当您取消选中任何复选框而不是全选时,请取消选中全选)。

像下面这样:-

$(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>

工作小提琴:- http://jsfiddle.net/am6rgdw1/

【讨论】:

  • 当我取消选中一个选中的复选框时它可以工作。但是,当我单独选中所有复选框时,未选中全选
  • 当我选中全选时它工作正常。但是当我单独选中所有复选框时,未选中 Select All Checkbox。当它起作用时,它将是一个完美的解决方案。 :)
  • @AbdulWaheed 很高兴为您提供帮助。 :):)
  • @AlivetoDie 你能检查一下这个吗:stackoverflow.com/questions/47055009/…
【解决方案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;
    }
  });
});

【讨论】:

    【解决方案3】:

    对于动态标签 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      相关资源
      最近更新 更多