gpt4 book ai didi

javascript - 如果所有子复选框都被选中,如何让父复选框被选中 - 文档准备好了吗?

转载 作者:行者123 更新时间:2023-11-30 10:25:39 25 4
gpt4 key购买 nike

我有几组复选框,它们在这个 jsFiddle 中的工作方式如下:

http://jsfiddle.net/3vker/

基本上,如果所有子复选框都被选中,则父复选框被选中,如果任何子复选框未被选中,则父复选框被取消选中。

它运行良好,除了一个问题:

  • 该页面是交互式的,因此可以根据从数据库中提取的结果选中所有子复选框(通过 HTML 中的 PHP)。在这种情况下,页面加载时会选中所有子复选框,但不会选中父复选框。

我如何实现当页面完全加载并且所有子复选框都被选中时(通过 HTML 中的 PHP),该组的父复选框也被选中?

这是 HTML:

<form>

<fieldset>
<input type="checkbox" class="parentCheckBox" /> Africa
<div class="content">
<input type="checkbox" value="" name="countries_option[]" class="childCheckBox" <?php if (in_array("algeria", $is_checked)) {?>checked="checked"<?php }?>/> Algeria<br />
<input type="checkbox" value="" name="countries_option[]" class="childCheckBox" <?php if (in_array("namibia", $is_checked)) {?>checked="checked"<?php }?>/> Namibia<br />
</div>
</fieldset>

<p></p>

<fieldset>
<input type="checkbox" class="parentCheckBox" /> Europe
<div class="content">
<input type="checkbox" value="" name="countries_option[]" class="childCheckBox" <?php if (in_array("unitedkingdom", $is_checked)) {?>checked="checked"<?php }?>/> United Kingdom<br />
<input type="checkbox" value="" name="countries_option[]" class="childCheckBox" <?php if (in_array("italy", $is_checked)) {?>checked="checked"<?php }?>/> Italy<br />
</div>
</fieldset>
</form>

还有 jQuery:

$(document).ready(
function() {

$('input.childCheckBox').change(function() {
$(this).closest('fieldset').find('.parentCheckBox').prop('checked',
$(this).closest('.content').find('.childCheckBox:checked').length === $(this).closest('.content').find('.childCheckBox').length
);
});

//clicking the parent checkbox should check or uncheck all child checkboxes
$(".parentCheckBox").click(
function() {
$(this).parents('fieldset:eq(0)').find('.childCheckBox').prop('checked', this.checked);
}
);
//clicking the last unchecked or checked checkbox should check or uncheck the parent checkbox
$('.childCheckBox').click(
function() {
if ($(this).parents('fieldset:eq(0)').find('.parentCheckBox').attr('checked') == true && this.checked == false)
$(this).parents('fieldset:eq(0)').find('.parentCheckBox').attr('checked', false);
if (this.checked == true) {
var flag = true;
$(this).parents('fieldset:eq(0)').find('.childCheckBox').each(
function() {
if (this.checked == false)
flag = false;
}
);
$(this).parents('fieldset:eq(0)').find('.parentCheckBox').attr('checked', flag);
}
}
);
}
);

最佳答案

$('fieldset').each(function(){
var $childCheckboxes = $(this).find('input.childCheckBox'),
no_checked = $childCheckboxes.filter(':checked').length;

if($childCheckboxes.length == no_checked){
$(this).find('.parentCheckBox').prop('checked',true);
}
});

真的很简单,只需遍历每个字段集,检查 checked 的长度与 total 的长度,并使用 .prop()

更改父级的 checked 属性

fiddle http://jsfiddle.net/3vker/1/

关于javascript - 如果所有子复选框都被选中,如何让父复选框被选中 - 文档准备好了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19669100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com