asp.net – updatepanel中的文本框的问题 – 不会导致OnTextChanged事件

我有以下情况:我在ajax更新面板内有一个文本框.无论用户在文本框中输入的内容,我必须显示一条消息(取决于用户键入的数据的不同消息).
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
        <ContentTemplate>
            <asp:TextBox ID="txtMyTexBox" runat="server" Width="500px" OnTextChanged="txtMyTexBox_TextChanged" AutopostBack="true"></asp:TextBox>
            <br />
            <asp:Label ID="lblMessage" runat="server" CssClass="errorMessage" Visible="false">Hello World</asp:Label>
         </ContentTemplate>
            <Triggers>
             <asp:AsyncPostBackTrigger ControlID="txtMyTexBox" />
            </Triggers>
      </asp:UpdatePanel>

在服务器端,我在页面加载时写了以下内容

ScriptManager.GetCurrent(this).RegisterasyncPostBackControl(txtMyTexBox);

和这样的方法

protected void txtMyTexBox_TextChanged(object sender,EventArgs e)
    {           
            if (.....)
            {
                lblMessage.Visible = false;
            }
            else
            {
                lblMessage.Visible = true;
            }            
    }

我现在的问题是:当用户键入文本框时,不会导致OnTextChanged事件.

我错过了什么吗?

解决方法

我不确定您的问题与UpdatePanel有关.

实际上,TextChanged事件在打字时不会触发.只有在文本框失去焦点后才会触发.如果AutopostBack设置为True或发生下一个回发,则会直接发生.请参阅AutoPostBack propertyTextChanged event的文档.

Afaik,你最好的打赌可能是在javascript中处理keyup事件.

这是一个简单的jQuery示例:

$(document).ready(function() {
    $(':text[id$=YourTextBox]').keyup(function() {
        if ($(this).val() === "your special value") {
            $('span[id$=YourLabel]').css('visibility','visible');
        }
        else {
            $('span[id$=YourLabel]').css('visibility','hidden');
        }
    });
});

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....