在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?
答案 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