我注意到popup显示BEFORE文本在文本框中更新之前,我猜js在页面呈现之前被调用...这将解释'undefined'弹出窗口...我如何确保js被调用在呈现页面之后?
重写以使其尽可能简单:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtRcaNotes" runat="server" TextMode="MultiLine" Width="800px"></asp:TextBox><br />
<asp:Button ID="btnDoneWithRcs" runat="server" OnClick="btnDoneWithRcs_Click" Text="Action Completed / Update Notes" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(
function(){doStuff();}
);
function doStuff()
{
$(document).ready(function() {
$('txtRcaNotes').hide();
alert($('txtRcaNotes').attr('id'));
});
}
</script>
</body>
代码背后:
protected void btnDoneWithRcs_Click(object sender, EventArgs e)
{
txtRcaNotes.Text += "asdfadf";
}
TEXTBOX不会隐藏,警告()退回'未定义'
答案 0 :(得分:1)
您只是错过了您的id选择器语法。尝试:
$('#<%= txtRcaNotes.ClientID %>').hide();
alert($('#<%= txtRcaNotes.ClientID %>').attr('id'));
请注意在每个选择器之前加上"#"
。
答案 1 :(得分:0)
您可以尝试的一件事是使用Firebug或其他DOM检查器,并检查ASP.NET在AJAX调用之前和之后生成的实际元素ID,看看它们是否相同。