如果我选中了父复选框,则所有子复选框都将在 php while 循环中被选中 [重复]

Posted

技术标签:

【中文标题】如果我选中了父复选框,则所有子复选框都将在 php while 循环中被选中 [重复]【英文标题】:if i checked parent checkbox all child check boxes will be checked in php while loop [duplicate] 【发布时间】:2021-06-27 09:10:33 【问题描述】:
<?php
$cq=mysqli_query($db_con,"SELECT * FROM `course` WHERE `status`='1' ");
while($cf=mysqli_fetch_array($cq))
?>
<script>
$(document).ready(function()

$('#parent<?php echo $cf['id']; ?>').on('click',function()
        if(this.checked)
            $('#child<?php echo $cf['id']; ?>').prop('checked',true);
        else
            $('#child<?php echo $cf['id']; ?>').prop('checked',false);
        
    );

);

</script>

<input type="checkbox" name="course[]" id="parent<?php echo $cf['id']; ?>"><?php echo $cf['course']; ?><br>

<?php
$sq=mysqli_query($db_con,"SELECT * FROM `softwares` WHERE `course`='$cf[id]' AND `status`='1' ");
while($sf=mysqli_fetch_array($sq))
?>
<input type="checkbox" name="softwares[]" id="child<?php echo $cf['id']; ?>" class="cu"><?php echo $sf['software']; ?><br>

<?php  ?>  

enter image description here

如果我选中了父复选框,所有子复选框都将被选中,但只有第一个子复选框被选中

【问题讨论】:

ID 在 html 文档中必须是唯一的。 将您的“子 ID”设为 class 值而不是 id 值,并使用类选择器将它们全部匹配。 【参考方案1】:

我建议使用class 而不是id,因为id 是每个HTML 的唯一元素,多个元素可以有相同的class

所以,儿童复选框 HTML:

<input type="checkbox" name="softwares[]" id="child<?php echo $cf['id']; ?>" class="cu child<?php echo $cf['id']; ?>"><?php echo $sf['software']; ?><br>

还有 JS:

$('#parent<?php echo $cf['id']; ?>').on('click',function()
        if(this.checked)
            $('.child<?php echo $cf['id']; ?>').prop('checked',true);
        else
            $('.child<?php echo $cf['id']; ?>').prop('checked',false);
        
    );

【讨论】:

以上是关于如果我选中了父复选框,则所有子复选框都将在 php while 循环中被选中 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果在 Woocommerce 中未选中复选框,则隐藏元素

如果选中所有子复选框,如何检查父复选框

如果所有复选框都未选中,则禁用按钮,如果至少选中一个,则启用它

以样式格式选择所有或部分父/子复选框

如果选中第一个复选框,则根据条件禁用其他复选框

当我取消选中自定义树视图中的子节点复选框时,如何取消选中所有父节点