【发布时间】:2016-11-06 20:59:21
【问题描述】:
我有多个复选框输入,而其中一些被禁用。因此,当我单击顶部的全选/取消全选复选框时,我想将此事件应用于唯一启用的复选框。此外,当我通过单击每个复选框来检查所有复选框时,必须单击全选复选框。
注意:我还有一个功能,当单击启用的复选框并随后单击保存时,该特定复选框将被禁用。我可以使用添加新复选框添加新复选框按钮。添加新复选框时,必须取消选中全选/取消全选复选框。
HTML
<input type="checkbox" id="ckbCheckAll" /><span>Select all</span>
<table id="myTable">
<tr>
<td>
<input type="checkbox" class="checkBoxClass" disabled="disabled" checked/> <span>Option1</span></td>
</tr>
<tr>
<td>
<input type="checkbox" class="checkBoxClass" /> <span>Option2</span></td>
</tr>
<tr>
<td>
<input type="checkbox" class="checkBoxClass" /> <span>Option3</span></td>
</tr>
<tr>
<td>
<input type="checkbox" class="checkBoxClass" /> <span>Option4</span></td>
</tr>
<tr>
<td>
<input type="checkbox" class="checkBoxClass" /> <span>Option5</span></td>
</tr>
</table>
<button id="add">
Add check box
</button>
<button id="save">
Save
</button>
JQuery
$(document).ready(function() {
$("#ckbCheckAll").click(function() {
$(".checkBoxClass").prop('checked', $(this).prop('checked'));
});
});
$(document).ready(function() {
$('.checkBoxClass').click(function() {
var selected = $('.checkBoxClass').length;
if ($('.checkBoxClass:checked:enabled').length === selected) {
$('#ckbCheckAll').prop('checked', true);
} else {
$('#ckbCheckAll').prop('checked', false);
}
})
});
$(document).ready(function() {
count = 5;
$('#save').click(function() {
$('.checkBoxClass').each(function() {
if ($(this).is(':checked')) {
$(this).prop('disabled', true);
}
})
});
$('#add').click(function() {
count = count + 1;
$('#myTable').append('<tr><td><input type="checkbox" class="checkBoxClass" /> <span>Option'+count+'</span></td></tr>')
});
})
【问题讨论】:
-
复选框的数量是可变的吗?如果没有,您可以添加到每个
'id并测试它们是否已启用并设置 selected=true。 -
@FDavidov 是的,它们是可变的。我可以使用添加按钮添加。
-
$(".checkBoxClass").not(':disabled').prop('checked', $(this).prop('checked'));你可以用这个。
-
Hummm... 然后你需要做一些循环(JQuery)检查部署的复选框。尽管如此,我还是建议您为每个人添加一个 ID(一个数字,例如“checkbox_1”、“checkbox_2”……)。
标签: javascript jquery html checkbox dynamic-content