我有这些代码允许我在选中“全选”时禁用所有其他复选框但是如果我之前在选中“全选”之前检查了其他复选框,则之前选中的复选框不会被删除但只会被禁用仍然检查框。那么如何在我点击“全选”后取消选中之前选择的其他所选列表项?
<asp:CheckBoxList ID="Checkboxlist1" runat="server" Height="80px" Width="500px" AppendDataBoundItems="True" ViewStateMode="Enabled">
<asp:ListItem Text="Select All" Value="Select All"></asp:ListItem>
</asp:CheckBoxList>
$(function () {
$("#Checkboxlist :checkbox").change(function () {
$("#Checkboxlist :checkbox").click(function () {
var ischecked = $(this).is(":checked");
var val = $(this).val();
//alert(val);
if (val == "Select All") {
if (ischecked) {
$("#Checkboxlist :checkbox").attr('disabled', 'disabled');
$(this).removeAttr('disabled');
$(this).attr('checked', true)
return;
} else {
$("#Checkboxlist :checkbox").removeAttr('disabled');
return;
}
}
});
});
})
答案 0 :(得分:0)
在else
之前,return
之前只需从Select All
删除已禁用的内容:
$(this).removeAttr("disabled");
或强>
仅修改selector
,因为checkbox
的值不是Select All
:
$("#Checkboxlist1:checkbox[value='Select All']")
<强>代码:强>
if (val == "Select All") {
//if Select All is checked, disable all other checkboxes and uncheck them as well
if (ischecked) {
$("#Checkboxlist1:checkbox").attr("disabled", "disabled"); //disable all checkboxes
$("#Checkboxlist1:checkbox").prop('checked', false); //uncheck all checkboxes
$(this).prop('checked', true); //check the "Select All" checkbox
return;
}
//enable all other checkboxes and uncheck them too
else {
$("#Checkboxlist1:checkbox").removeAttr("disabled"); //enable all checkboxes
$("#Checkboxlist1:checkbox").prop('checked', false); //uncheck all checkboxes
$(this).prop('checked', false); //uncheck the "Select All" checkbox
return;
}
}