0

我的 Asp.net 复选框

<asp:CheckBox ID="All" runat="server" Checked="true" Text="ALL" ForeColor="Black" /><br />
<asp:CheckBox ID="otherCheckBox2" runat="server" Checked="false" Text="Accepted" ForeColor="Black" CssClass="chkdisplay" /><br />
<asp:CheckBox ID="otherCheckBox3" runat="server" Checked="false"  Text="Contacted" ForeColor="Black" CssClass="chkdisplay"  /><br />
<asp:CheckBox ID="otherCheckBox4" runat="server" Checked="false" Text="Pending" ForeColor="Black" CssClass="chkdisplay" /><br />
<asp:CheckBox ID="otherCheckBox5" runat="server" Checked="false" Text="Pre-Authorized" ForeColor="Black" CssClass="chkdisplay" /><br />
<asp:CheckBox ID="otherCheckBox6" runat="server" Checked="false" Text="Show Deleted" ForeColor="Black" CssClass="chkdisplay" /><br />
<asp:CheckBox ID="otherCheckBox7" runat="server" Checked="false" Text="Treated" ForeColor="Black" CssClass="chkdisplay" />

我试过的脚本

 $(document).ready(function () {
            $('[id^="otherCheckBox"]').each(function () {
                if ($(this.checked)) {
                    $('#<%= All.ClientID %>').attr('checked', false);
                }
            });
        });

我想迭代ASP复选框,当检查2 T0 7的任何复选框时,请检查使用ID =“ ALL”检查。
我请求所有 stackflow 专家请给我一个答案,我正在等待很长时间的答案。提前致谢

4

2 回答 2

2

为什么不简单地完全消除每个:

$('#<%= All.ClientID %>').prop('checked', !($('[id^="otherCheckBox"]').not(':checked').length));

或者如果它是一个固定的 id:

$('#All').prop('checked', !($('[id^="otherCheckBox"]').not(':checked').length));
// class example of this same thing replaces the id prefix selector
$('#All').prop('checked', !($('.chkdisplay').not(':checked').length));

额外编辑:我怀疑您可能需要基于 ALL/group 的切换:您可以使用它,或者如果它对您没有帮助,则忽略它。

//if any is checked/changed reset All to reflect
$('[id^="otherCheckBox"]').on('change blur', function () {
    $('#All').prop('checked', !($('[id^="otherCheckBox"]').not(':checked').length));
});
// if All is changed, reflect the All setting (check/uncheck the group)
$('#All').on('change blur', function () {
    $('[id^="otherCheckBox"]').prop('checked', $(this).prop('checked'));
});
// set initial all state
$('[id^="otherCheckBox"]').eq(0).blur();

小提琴显示功能的最后一部分:http: //jsfiddle.net/hZFFr/1/

于 2013-05-28T13:18:18.280 回答
1

您的代码看起来很合理。几点建议:

  • 无需包装您使用它的this.checked方式$()
  • 正如您所展示的,您知道,通过使用All.ClientID,您的 HTML 复选框的 ID 可能与您的 ASP.NET 复选框的 ID 不完全相同。您可以考虑使用$('.chkdisplay')或其他方法来访问感兴趣的复选框。
  • 您发布的代码只能在 DOMReady 上运行。您可能还想在任何$('.chkdisplay').change
  • 如果您正在运行 jQuery 1.6 或更高版本,请使用.prop('checked', false)而不是.attr
于 2013-05-28T11:23:00.323 回答