我有以下ASP.NET服务器控件复选框。
<asp:checkbox id="chkMonS1" runat="server" />
<asp:checkbox id="chkMonS2" runat="server" />
<asp:checkbox id="chkAllMon" runat="server" />
以及其他复选框。
<asp:checkbox id="chkTueS1" runat="server" />
<asp:checkbox id="chkTueS2" runat="server" />
<asp:checkbox id="chkAllTue" runat="server" />
所以我尝试使用jQuery来选择所有复选框..
<script type="text/javascript">
$('chkAllMon').click(
function () {
$('chkMonS1').attr('checked', true)
$('chkMonS2').attr('checked', true)
}
)
</script>
然而,它不起作用。它出了什么问题?
答案 0 :(得分:10)
您正尝试在客户端上使用服务器端ID。 看起来应该是这样的:
$('#<%=chkAllMon.ClientID %>').click(
function () {
$('#<%=chkMonS1.ClientID %>').attr('checked', true)
$('#<%=chkMonS2.ClientID %>').attr('checked', true)
}
说明:ASP.NET ID是您在服务器上看到的ID。当ASP.NET控件呈现为html时,它们会被赋予另一个id。
答案 1 :(得分:8)
如果您使用的是ASP.NET 4.0或更高版本,则很容易修复。
首先,您需要在jQuery选择器中使用#
符号,如下所示:$('#chkMonS1')
。
此外,您需要在ASP.NET元素中设置ClientIdMode="Static"
,如下所示。这会将HTML id
设置为与ASP.NET id
相同的值。请参阅this article了解原因。
<asp:checkbox id="chkAllTue" runat="server" ClientIDMode="Static" />
答案 2 :(得分:1)
复选框的ID将在客户端(与所有占位符等)非常不同,因此jQuery根本找不到它们。您可以尝试一些解决方案:
如果脚本在同一页面上,您可以使用C#嵌入ClientId,如下所示:
$('#<%= chkMonS1.ClientId %>').attr("checked", true)
如果脚本嵌入在外部文件中,并且您使用的是ASP.NET 4.0,则可以将ClientIDMode更改为“Static”,并且可以使用复选框的确切ID(请参阅此处{{更多信息3}})
您可以尝试使用此jquery选择器来查找给定的复选框(因为客户端ID总是以您分配的ID结束,尽管ASP.NET添加到它的前面;如果这样做可能会很危险你在不同的命名容器中使用相同的ID):
$('input[id$='chkMonS1']').attr("checked", true)
答案 3 :(得分:1)
如果这是ASP.NET 2.0,那么您需要使用服务器生成的ID:
<script type="text/javascript">
$('#<%=chkAllMon.ClientID%>').click(
function () {
$('#<%=chkMonS1.ClientID%>').attr('checked', true)
$('#<%=chkMonS2.ClientID%>').attr('checked', true)
}
)
</script>
如果是ASP.NET 4.0,请参阅ChessWiz's answer。
答案 4 :(得分:0)
您需要通过ID选择哈希:
$('#chkAllMon').click(function () {
$('#chkMonS1').attr('checked', true)
$('#chkMonS2').attr('checked', true)
});