如果使用jquery禁用转发器中的所有其他复选框,如何禁用父复选框

时间:2013-04-23 09:52:44

标签: jquery asp.net

可能是我是愚蠢的还是刚接触到这个请给我一个解决方案。我有一个转发器,我通过检查项目数据中的条件禁用后面的代码中的转发器复选框。所以如果所有的复选框禁用我希望主标题复选框也被禁用。

我试过了但是失败了

 $(document).ready(function () {

        if ($('#All input:checkbox').attr('disabled')) {
            $('#SelectAll').attr("disabled", true);
        }
            });

如果div中的所有复选框都已禁用,我想要禁用“SelectAll”复选框

<asp:Repeater ID="AutoPublishList" runat="server" EnableViewState="true">
                    <HeaderTemplate>
                        <td id="RemoveHead" runat="server">
                            <input type="checkbox" id="SelectAll" runat="server" clientidmode="Static" />
                        </td>
                        <td class="sortableHeaderSmall" onclick=" Sort('ProductName');">
                            Manager/Product
                        </td>
                        <td class="sortableHeaderSmall" onclick="Sort('PageID');">
                            Page
                        </td>
                        <td class="sortableHeaderSmall" onclick="Sort('IsPreliminary');">
                            Prelim
                        </td>
                        <td class="sortableHeaderSmall" onclick="Sort('LastSaved');">
                            Last Updated
                        </td>
                        <td class="sortableHeaderSmall" onclick="Sort('PublishDate');">
                            Time Published
                        </td>
                        <td class="sortableHeaderSmall" onclick="Sort('ErrorDisplay');">
                            Errors
                        </td>
                        <td class="sortableHeaderSmall" onclick="Sort('Comment');">
                            Comments
                        </td>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <tr>
                            <td id="RemoveCell" runat="server" style="" class="sortableBodySmall">
                                <div id="All">
                                    <input type="checkbox" id="SelectRow" runat="server" value=' <%#DataBinder.Eval(Container, "DataItem.ProductID")%>' />
                                    <asp:HiddenField runat="server" ID="pageIDHidden" Value='<%#DataBinder.Eval(Container, "DataItem.PageID")%>' />
                                    <asp:HiddenField runat="server" ID="FirmID" Value='<%#DataBinder.Eval(Container, "DataItem.FirmID")%>' />
                                </div>
                            </td>
                            <td class="sortableBodySmall" align="left">
                                <a class="primaAnchor" href='<%# String.Format("/pg/imq/mf/index.aspx?fid={0}&pid={1}", Eval("FirmID"),Eval("ProductID")) %>'
                                    target="_blank">
                                    <asp:Literal EnableViewState="False" ID="ProductName" runat="server" Text='<%#DataBinder.Eval(Container, "DataItem.ProductName")%>' />
                                </a>
                            </td>
                            <td class="sortableBodySmall" align="left">
                                <a class="primaAnchor" href='<%# String.Format("/pg/imq/imqpage{0}.aspx?fid={1}&pid={2}",Eval("PageID"), Eval("FirmID"),Eval("ProductID")) %>'
                                    target="_blank">
                                    <asp:Literal EnableViewState="False" ID="PageName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"PageName")%>' /></a>
                            </td>
                            <td class="sortableBodySmall" align="center">
                                <asp:Literal EnableViewState="False" ID="IsPreliminary" runat="server" Text=' <%# IIf(DataBinder.Eval(Container.DataItem, "IsPreliminary") = True, "P", "")%> ' />
                            </td>
                            <td class="sortableBodySmall" align="right" style="width: 105px">
                                <asp:Literal EnableViewState="False" ID="LastSaved" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "LastSaved")%>' />
                            </td>
                            <td class="sortableBodySmall" align="right" style="width: 105px">
                                <asp:Literal EnableViewState="False" ID="PublishDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PublishDate")%>' />
                            </td>
                            <td class="sortableBodySmall" align="left" style="width: 105px">
                                <asp:Literal EnableViewState="False" ID="ErrorDisplay" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ErrorDisplay")%>' />
                            </td>
                            <td class="sortableBodySmall" align="left">
                                <asp:Literal EnableViewState="False" ID="Comment" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Comment")%>' />
                            </td>
                        </tr>
                    </ItemTemplate>

2 个答案:

答案 0 :(得分:2)

你可以试试这个,我举个例子,根据你的情况调整你的代码

<div id="test">
    <input type="checkbox" id="chkAll" />
    <input type="checkbox" class="chk" disabled="disabled" /> 1
    <input type="checkbox" class="chk" disabled="disabled" /> 2
    <input type="checkbox" class="chk" disabled="disabled" /> 3
</div>

<script type="text/javascript">
    $(document).ready(function () {
        if ($('#test input.chk:disabled').length == $('#test input.chk').length) {
            $('#chkAll').attr('disabled', 'disabled');
        }
    });
</script>

答案 1 :(得分:1)

您可以尝试:

 $(document).ready(function () {

    if ($('#All input:checkbox:enabled').length <= 0) {
        $('#SelectAll').prop("disabled", true);
    }
 });

修改

这是禁用所有复选框的小提琴,因此您可以看到主要的复选框也被禁用 http://jsfiddle.net/6P3WB/

这里只有一个复选框启用了相同的小提琴,所以你可以看到主要的一个也启用:) http://jsfiddle.net/6P3WB/1/