使用jQuery检查ASP.NET复选框

时间:2011-04-20 16:45:51

标签: jquery asp.net

我有以下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>

然而,它不起作用。它出了什么问题?

5 个答案:

答案 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根本找不到它们。您可以尝试一些解决方案:

  1. 如果脚本在同一页面上,您可以使用C#嵌入ClientId,如下所示:

    $('#<%= chkMonS1.ClientId %>').attr("checked", true)

  2. 如果脚本嵌入在外部文件中,并且您使用的是ASP.NET 4.0,则可以将ClientIDMode更改为“Static”,并且可以使用复选框的确切ID(请参阅此处{{更多信息3}})

  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)
});