如果在该 div 中选中了所有子复选框,则选中/取消选中(全选复选框)

Posted

技术标签:

【中文标题】如果在该 div 中选中了所有子复选框,则选中/取消选中(全选复选框)【英文标题】:Check/Uncheck (Select All checkbox) if all child check-boxes are selected in that div 【发布时间】:2018-04-13 18:42:34 【问题描述】:

让我试着从图片上解释一下,

1.Reservations,客户在租赁车辆选项卡下检查。

    现在从租赁车辆选项卡中,两者都从 php 代码中选择,即(预订、客户),

    所以现在我想在 document.ready 中编写代码来检查 SelectAll_Dynamic(全选复选框),!因为所有内部复选框(预订、客户)都已选中,

    如果未选中内部复选框(预订或客户)中的任何人,则应取消选中 SelectAll_Dynamic(全选复选框)。

14 是动态的。!对于每个新的 div,它都会发生变化,例如:1,4,6,12 唯一..

<div id="tabs-14" 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="14">
                        <b>Select All</b>
                    </label>
                </div>
            </div>
            <div class="col-md-3">
                <div class="checkbox">
                    <label>
                    <input type="checkbox" name="pages[]" value="41" checked="">Reservations</label>
                </div>
            </div>
            <div class="col-md-3">
                <div class="checkbox">
                    <label>
                    <input type="checkbox" name="pages[]" value="52" checked="">Customers</label>
                </div>
            </div>
        </div>
    </div>
</div>

我想在页面加载后执行一个函数,它应该检查是否所有复选框都被选中,除了第一个具有 SelectAll_Dynamic 类的复选框

如果所有子复选框都被选中,那么应该选择父复选框我该如何实现..?

这是我检查/取消全部选中的功能

$('.SelectAll_Dynamic').click(function() 
                var select_Id = this.id;
                var checked = $(this).prop('checked');
                $('#tabs-'+select_Id).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);
                    
                
            );

我的预期结果是:

<input type="checkbox" class="SelectAll_Dynamic" id="14" checked> //checked

如果所有子复选框都被选中。!

【问题讨论】:

@AbdulWaheed 这里没有 php,所以为什么要这样标记? “我说的是页面加载,如果从 php 代码中选择了所有子复选框,那么应该选择父复选框” - 这里没有相关代码。要包含已经设置的值,需要做的是预取这些值并将其存储在会话/cookie 中。这个问题不清楚,恕我直言。 @AbdulWaheed 您的输入没有任何价值。 好的,这篇文章开始显得过于宽泛和不清楚,并且需要有关如何执行此操作的代码。您能否至少通过更新并诚实地对您的帖子进行详细说明? @AbdulWaheed @Fred-ii- 我已编辑问题尝试阅读 4 分一次。! @AlivetoDie 不是来自我想要实现的 javascript 的 php 【参考方案1】:

你需要这样做:-

$(document).ready(function()
  $('.tab-pane').each(function()
    var checkbox_length = $(this).find('input:checkbox:not(:first)').length;
    var checked_check_box_length = $(this).find('input:checkbox:not(:first):checked').length;
    if (checkbox_length == checked_check_box_length) 
      $(this).find('input:checkbox:first').prop('checked', true);
    
  );
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="tabs-14" 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="14">
                        <b>Select All</b>
                    </label>
                </div>
            </div>
            <div class="col-md-3">
                <div class="checkbox">
                    <label>
                    <input type="checkbox" name="pages[]" value="41" checked="">Reservations</label>
                </div>
            </div>
            <div class="col-md-3">
                <div class="checkbox">
                    <label>
                    <input type="checkbox" name="pages[]" value="52" checked="">Customers</label>
                </div>
            </div>
        </div>
    </div>
</div>

【讨论】:

@AbdulWaheed 它将相应地适用于每个选项卡,而不会出现任何问题。很高兴帮助你:):)【参考方案2】:

$(document).ready(function() 
var allCheckboxes = $('.SelectAll_Dynamic').closest('div[id^="tabs-"]').find('input:checkbox').not(":eq(0)");
var flag = true;
$.each(allCheckboxes, function( i, val ) 
  if($(val).prop('checked') == false)
  		flag = false;
);

if(flag)
  $('.SelectAll_Dynamic').prop('checked', true);

$('.SelectAll_Dynamic').click(function() 
                var select_Id = this.id;
                var checked = $(this).prop('checked');
                $('#tabs-'+select_Id).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>
<div id="tabs-14" 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="14">
                        <b>Select All</b>
                    </label>
                </div>
            </div>
            <div class="col-md-3">
                <div class="checkbox">
                    <label>
                    <input type="checkbox" name="pages[]" value="41" checked="">Reservations</label>
                </div>
            </div>
            <div class="col-md-3">
                <div class="checkbox">
                    <label>
                    <input type="checkbox" name="pages[]" value="52" checked="">Customers</label>
                </div>
            </div>
        </div>
    </div>
</div>

$(document).ready 函数中添加以下代码,检查是否选中了所有其他复选框,然后选中 Select all 复选框。

var allCheckboxes = $('.SelectAll_Dynamic').closest('div[id^="tabs-"]').find('input:checkbox').not(":eq(0)");
var flag = true;
$.each(allCheckboxes, function( i, val ) 
  if($(val).prop('checked') == false)
        flag = false;
);

if(flag)
  $('.SelectAll_Dynamic').prop('checked', true);

【讨论】:

我在这里添加了sn-p 我这里没有使用任何动态值。我错过了什么?? 是否有多个带有$('.SelectAll_Dynamic')的复选框?【参考方案3】:

function SelectAll_Dynamic()
    if($('.SelectAll_Dynamic').is(':checked'))
        //alert('if');
        $( "input" ).prop( "checked", true );
     else 
        //alert('else');
        $( "input" ).prop( "checked", false );
    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="tabs-14" 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" onclick="SelectAll_Dynamic();" id="14" checked>
                        <b>Select All</b>
                    </label>
                </div>
            </div>
            <div class="col-md-3">
                <div class="checkbox">
                    <label>
                    <input type="checkbox" name="pages[]" value="41" checked="">Reservations</label>
                </div>
            </div>
            <div class="col-md-3">
                <div class="checkbox">
                    <label>
                    <input type="checkbox" name="pages[]" value="52" checked="">Customers</label>
                </div>
            </div>
        </div>
    </div>
</div>

【讨论】:

以上是关于如果在该 div 中选中了所有子复选框,则选中/取消选中(全选复选框)的主要内容,如果未能解决你的问题,请参考以下文章

如果在 laravel 中选中了特定的复选框,如何要求一个字段?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?