我在网上看到的大多数示例都使用两个复选框,一个用于单个复选框(全部),第二个是复选框列表。在我的情况下,我只有一个绑定到数据源的复选框列表,例如我的数据源列表选项为(全部,苹果,橙子,红色,蓝色)。我已经实现了大部分功能,除了当所有内容都未选中并且我选中最后一项(例如蓝色)时,它会选中“全部”选项,因此无法正常工作。id是列表中“全部”项目的id。
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
var id = "#<%=cbOptions.ClientID %>_0";
var checkboxlistid = "#<%= cbOptions.ClientID %>";
$(id).click(function () {
$("#<%= cbOptions.ClientID %> input:checkbox").attr('checked', this.checked);
});
$(checkboxlistid + " input:checkbox").click(function () {
if ($(checkboxlistid).attr('value') != 0) {
if ($(id).attr('checked') == true && this.checked == false) {
$(id).attr('checked', false);
}
else {
if ($(id).attr('checked') == true && this.checked == true)
CheckSelectAll();
}
}
});
function CheckSelectAll() {
var flag = true;
$(checkboxlistid + " input:checkbox").each(function () {
if ($(checkboxlistid).attr('value') != 0) {
if (this.checked == false) {
flag = false;
}
else {
if ($(id).attr('checked') == true && this.checked == false) {
flag = false;
}
else {
flag = true;
}
}
}
});
$(id).attr('checked', flag);
}
});
</script>
<asp:CheckBoxList runat="server" ID="cbOptions" >
</asp:CheckBoxList>
</asp:Content>