¿Cómo puedo desmarcar la selección de todos checkbox(parent), cuando cualquiera de sus casillas de verificación secundarias están deseleccionadas!

Desde el fragmento de código cuando seleccionamos todas las casillas de verificación y cuando deseleccionamos a los usuarios de su casilla de verificación, todos deben estar desmarcados (porque no todas las casillas de verificación están seleccionadas)

$(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>
3
Mr world wide 1 nov. 2017 a las 08:55

3 respuestas

La mejor respuesta

En realidad, no ha realizado ninguna codificación con respecto a su problema (es decir, cuando desmarca cualquier casilla de verificación en lugar de seleccionar todo, haga que seleccionar todo esté desmarcado).

Haz lo siguiente: -

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

Fiddle de trabajo: - http://jsfiddle.net/am6rgdw1/

3
Anant Singh---Alive to Die 1 nov. 2017 a las 09:32

Para las ID de pestañas dinámicas me gustó esto:

Este es mi html y 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>

Este es mi guión:

<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>
1
Mr world wide 1 nov. 2017 a las 10:15

Agregue el siguiente código a su js:

$('input[name="pages[]"]').click(function(){
  $('input[name="pages[]"]').each(function() { 
    var checked = $(this).attr('checked');
    if(!checked){
      $('#Admin').attr('checked', false);
      return false;
    }
  });
});
2
Subhrajyoti Das 1 nov. 2017 a las 06:18