我在网上看到的大多数例子都有一个片段,他们使用2个复选框,一个只用一个复选框(全部),第二个是复选框列表。在我的情况下,我只有一个复选框列表绑定到数据源,例如我的数据源列表选项是(全部,苹果,橙色,红色,蓝色),我得到了大部分工作,除非一切都未选中,我检查最后一项,例如蓝色,它检查ALL选项。所以不能正常工作。 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>
答案 0 :(得分:2)
<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 ($(id).attr('checked') == true && this.checked == false) {
$(id).attr('checked', false);
}
else
CheckSelectAll();
});
function CheckSelectAll() {
$(checkboxlistid + " input:checkbox").each(function () {
var checkedcount = $(checkboxlistid + " input[type=checkbox]:checked").length;
var checkcondition = $(checkboxlistid + " input[type=checkbox]:").length - 1
if (checkedcount >= checkcondition)
$(id).attr('checked', true);
else
$(id).attr('checked', false);
});
}
});
</script>
<asp:CheckBoxList runat="server" ID="cbOptions" >
</asp:CheckBoxList>
</asp:Content>
答案 1 :(得分:0)
尝试将此代码作为您的设置检查属性,而不是使用true和false分别使用选中和''..更多关于您不能为所有复选框使用相同的ID.id是唯一的..如果您使用相同的ID为所有复选框然后它根本不起作用。如果是这样,请将其作为类名并使用$(.classname)
选择器
function CheckSelectAll() {
var flag = "checked";
$(checkboxlistid + " input:checkbox").each(function () {
if ($(checkboxlistid).attr('value') != 0) {
if (this.checked == false) {
flag = '';
}
else {
if ($(id).attr('checked') == true && this.checked == false) {
flag = '';
}
else {
flag = "checked";
}
}
}
});
$(id).attr('checked', flag);
}
});