2010-01-18 102 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"); 
});