2013-04-23 36 views
0

可能我是啞巴或新的,請給我一個解決方案。我有一箇中繼器,我禁用中繼器複選框從通過檢查項目數據綁定中的條件來隱藏代碼。因此,如果所有複選框都被禁用,我希望主標題複選框也被禁用。如果禁用父母複選框,如果中繼器中的所有其他複選框被禁用使用jquery

我試過,但失敗了

$(document).ready(function() { 

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

如果在div #ALL所有複選框禁用我想複選框 「全選」 禁用

<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> 
+0

你爲什麼不分享的你已經嘗試過的JavaScript代碼?這樣,它看起來像你正在尋找某人做你自己的工作。 – likeitlikeit 2013-04-23 10:17:57

+0

我已經發布在上面的問題 - 「我試過這個,但失敗了」$(document).ready(function(){ 如果($('#All input:checkbox')。attr {('#SelectAll')。attr(「disabled」,true); } }); – 2013-04-23 10:25:05

回答

1

你可以試試:

$(document).ready(function() { 

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

編輯

下面是禁用所有複選框小提琴,所以你可以看到主要的一個被禁用過 http://jsfiddle.net/6P3WB/

這裏能只用一個複選框一樣擺弄,所以你可以看到主要的一個被啓用過:) http://jsfiddle.net/6P3WB/1/

+0

@ robin-hi robin我希望只有當div中的所有複選框都被禁用時,主複選框「selectall」纔會被禁用。如果任何一個被啓用,我希望啓用主複選框 – 2013-04-23 10:10:11

+0

失敗 - 這種方式我已經嘗試過 – 2013-04-23 10:31:07

+0

我編輯我的答案添加一些小提琴:) – 2013-04-23 13:38:55

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> 
相關問題