JQquery单击事件不适用于asp面板中的html输入(复选框)

时间:2016-06-03 16:06:18

标签: jquery asp.net html5 click

在aspx文件中我有一个更新面板下的asp:面板

ASPX:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" >
 <ContentTemplate>
  <asp:Panel ID="PnlTraveler" runat="server" Visible="false">
    <input id="chkBoxVisAst" type="checkbox" class="checkbox" enableviewstate="true" />
  </asp:Panel>
 <ContentTemplate>
</asp"UpdatePanel>

如果我在asp:Content头下的同一页面中编写我的Jquery代码来处理click事件,它在我的情况下不识别事件id chkBoxVisAst =&gt;这个id。

JQuery的

asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">


<script type="text/javascript">

    $(document).on('ready', function () {
        $('#chkBoxVisAst').on('click', function ()
        {
            if ($(this).attr("checked") == "checked")
            {
                alert("checked");
            } else {
                alert("unchecked");
            }
        });
    });
</script>

如果我将输入(复选框)放在我的面板之外,它就有效。我如何从asp:panels中访问我的事件id?

1 个答案:

答案 0 :(得分:2)

问题在于您的代码。您无法在更新面板中直接添加任何元素。您必须将它们放在 ContentTemplate 中。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Panel ID="PnlTraveler" runat="server" Visible="false">
                    <input id="chkBoxVisAst" type="checkbox" class="checkbox" enableviewstate="true" />
                </asp:Panel>
            </ContentTemplate>
        </asp:UpdatePanel>

添加上面的代码后,您将能够访问带有ID的复选框元素。

修改

添加以下代码,

var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(function () {
        $('#chkBoxVisAst').on('click', function () {
            if ($(this).attr("checked") == "checked") {
                alert("checked");
            } else {
                alert("unchecked");
            }
        });
    });

https://msdn.microsoft.com/en-us/library/bb311028(v=vs.100).aspx