javascript - 如果所有子类别复选框均已选中,则应自动选中父复选框
问题描述
这是我的代码:我为父母和孩子创建了复选框。我正在寻找以下代码的 Javascript 验证。当我选择父复选框正在选择的单个子复选框但我想选择所有子复选框时,只有父复选框应该选择。
<label>Product Category:</label>
<div class="wk_field wk_category">
<div class="wk_for_validation">
<div id="wk_category_label">CATEGORIES</div>
<div class="wk_cat_container" style="margin-left:0px;">
<span class="wk_minus"> </span>
<span class="wk_foldersign"></span>
<span class="wk_elements wk_cat_name">Gold</span>
<input class="wk_elements" type="checkbox" value="3" name="category[]" id="3">
</div>
<div class="wk_removable wk_cat_container" style="margin-left: 20px;">
<span class="wk_no"></span>
<span class="wk_foldersign"></span>
<span class="wk_elements wk_cat_name">Earrings</span>
<input class="wk_elements" type="checkbox" value="27" name="category[]" data-parent=3 >
</div>
<div class="wk_removable wk_cat_container" style="margin-left: 20px;">
<span class="wk_minusend"></span>
<span class="wk_foldersign"></span>
<span class="wk_elements wk_cat_name">Rings</span>
<input class="wk_elements" type="checkbox" value="26" name="category[]" data-parent=3 id="26">
</div>
<div class="wk_removable wk_cat_container" style="margin-left: 20px;">
<span class="wk_minusend"></span>
<span class="wk_foldersign"></span>
<span class="wk_elements wk_cat_name">bangles</span>
<input class="wk_elements" type="checkbox" value="26" name="category[]" data-parent=3 id="26">
</div>
var cb_list = document.getElementsByTagName('input');
for (var i = 0, len = cb_list.length; i < len; i++) {
if (cb_list[i].type === 'checkbox') {
cb_list[i].onclick = function(i) {
return function() {
checkParent(this);
}
}(i);
}
}
function checkParent(ele) {
var idparent = ele.getAttribute('data-parent');
if (idparent) {
var parent = document.getElementById(idparent);
if (ele.checked === true) parent.checked = true;
checkParent(parent);
}
}
解决方案
注意:这是在 jQuery
/* 顶部的单个复选框以选择所有子复选框 */
$('#parent_checkbox').on('click', function () {
if (this.checked) {
$('.child_check').each(function () {
this.checked = true;
});
} else {
$('.child_check').each(function () {
this.checked = false;
});
}
});
/* 选中所有子复选框以选中父复选框 */
$(document).on('click', '.child_check', function () {
if ($('.child_check:checked').length === $('.child_check').length) {
$('#parent_checkbox').prop('checked', true);
} else {
$('#parent_checkbox').prop('checked', false);
}
});
推荐阅读
- c - 如何将省略号参数传递给makecontext,它也接受C中的省略号参数?
- ios - MTKView 绘图性能
- mysql - 如何使用 Mysql 过程和 Date() 创建存档表
- javascript - jQuery 行取消选择的不同行为,我不明白为什么
- reactiveui - ReactiveUI - 在视图模型属性更改时在视图中调用委托
- django - 主页链接发送到关于/关于页面无法回家
- bash - 带有少量命令的 Bash,将少量内置命令列入白名单
- linux - 端口转发仅在本地工作
- c# - 如何从预制件中获取场景中游戏对象的引用
- c# - 棋盘位图内存不足:如何使棋盘成为单个位图?