OnTextChanged事件没有触发

5

我在我的 .Aspx 页面里有一个文本框:

<ajax:UpdatePanel ID="UpdatePanel2" runat="server">
    <ContentTemplate>
        <asp:TextBox ID="txtCity" AutoPostBack="true" OnTextChanged="txtCity_TextChanged"
            Width="90%" runat="server" ></asp:TextBox>
    </ContentTemplate>
</ajax:UpdatePanel>

代码后端:

protected void txtCity_TextChanged(object sender, EventArgs e)
{
    lblMessage.Text = "you have typed:" + txtCity.Text;
}

对于同一 .Aspx 页面上的 lblMessage

<ajax:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Label ID="lblMessage" runat="server" Text="" ></asp:Label>
    </ContentTemplate>
</ajax:UpdatePanel>

但是当我在文本框中输入时,lblMessage 没有更新。

如何纠正这个问题?


当你说“当我在文本框中输入时”时,你的意思是,当你在文本框中输入并提交它,对吗? - Richard Marskell - Drackir
即使假设服务器端方法实际上会执行(根据您当前的代码,除非按照Drackir所说提交),您忘记在Label文本更新后调用UpdatePanel1的.Update() - Ian Pugsley
@Drackir 我想要的是在不进行页面回传的情况下显示我在文本框中输入的文本。 - Chris
看看我的回答。你需要的是JavaScript解决方案,而不是ASP。 - Richard Marskell - Drackir
1个回答

10

从你的想法来看,似乎你认为在输入文本框时会触发OnTextChange事件。但实际上不是这样的。 OnTextChange是一个服务器端事件,仅在页面(或面板)被提交后才触发。在页面中输入文本框并不会提交页面,因此只有在提交表单后才会触发此事件。

在这种情况下,您需要使用一些JavaScript和onkeypress JavaScript事件来在输入文本框时更新标签文字。JavaScript在客户端运行,无需提交页面就可以运行。


太遗憾了。我也在尝试同样的事情 ): - Kristopher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接