2010-01-18 173 views
0

考慮這種情況:jQuery的:檢查所有複選框

  • <asp:CheckBoxList>母版頁。
  • 目標是在頁面加載時檢查此列表中的所有複選框。
  • 頁面上有許多複選框列表。

的標記:

<asp:CheckBoxList runat="server" ID="chkSubscriptionType" 
     DataSourceID="myDS" 
     CssClass="boxes" DataTextField="Name" DataValueField="Name" /> 

呈現到:

<input id="ctl00_cphContent_chkSubscriptionType_0" type="checkbox" name="ctl00$cphContent$chkSubscriptionType$0" />

問題:你怎麼能使用jQuery檢查所有箱子在這個asp:CheckBoxListdocument.ready?我到處都可以看到示例,但主頁面使用的命名約定將其他地方的示例拋出。

回答

6

正如你所提到的那樣,這個ID將會自動生成並混亂。您可以使用屬性過濾器來選擇包含您知道的部分的所有元素,即「chkSubscriptionType」。例如:

$("input[id*=chkSubscriptionType]").attr("checked", "checked"); 

* =表示「contains」。

+0

如果css類特定於相關複選框,那麼也可以在選擇器中使用它。 – grenade 2010-01-18 19:23:39

+0

對你來說真的很有幫助+1 – 2012-11-23 12:14:39

4

ASP.NET的命名約定有點令人沮喪。你可以通過在一個跨度中包裝你的元素並給它一個類來支持它們。然後,您可以使用該span.class集中你的選擇:

$(function(){ 
    // On dom-ready, all checkboxes in span.names will be checked 
    $("span.names :checkbox").attr("checked", "checked"); 
}); 

<span class="names"> 
    <asp:CheckBoxList ... /> 
</span> 
+1

+1,但用'input [type = checkbox]'替換':checkbox'' – 2010-01-18 19:09:10

+0

BlueRaja,爲什麼? ':checkbox'是'input [type ='checkbox']'的簡寫形式。 – Sampson 2010-01-18 19:59:13

+0

是:複選框是輸入的簡寫形式[type ='checkbox']還是僅僅是[type ='checkbox']? http://docs.jquery.com/Selectors/checkbox似乎意味着後者通過建議input:checkbox來代替。 – mark123 2010-01-19 00:49:39

3

不管用ASP/PHP /紅寶石等,你應該能夠做這樣的事情:因爲命名的

$(document).ready(function(){ 
     $("input[type=checkbox]").attr("checked", "checked"); 
});