TextBox不会在IE 8上触发TextChanged事件,AutoPostback为true

时间:2010-06-10 18:56:53

标签: asp.net internet-explorer textbox

我有同样的事情,有很多TextBoxes与事件TextChanged设置和使用 AutoPostback = true,适用于所有浏览器(Chrome,Opera,Firefox 3.6),除了IE 8,IE 6/7我没有测试。

我不想将onblur事件放在我的所有TextBox中,因为有许多页面都有许多使用此事件的TextBox。

描述

我正在使用masterPage,

在aspx中我有

<asp:TextBox ID="txtCnpj" runat="server" CssClass="txt" Width="200px"
    onkeyup="Mascara(this,Cnpj)" onkeydown="Mascara(this,Cnpj)" MaxLength="18"
    AutoPostBack="true" ValidationGroup="txtCnpj"
    OnTextChanged="txtCnpj_TextChanged"></asp:TextBox>

在aspx.cs

 protected void txtCnpj_TextChanged(object sender, EventArgs e)
   {
        if (CredorInvestimento.GetCredorInvestimento(txtCnpj.Text) != null)
        {
            ((TextBox)sender).Text = "";
            ((TextBox)sender).Focus();
            rfvCnpj.ErrorMessage = "Duplicado";
            Page.Validate(txtCnpj.ID);
        }
        else
            txtNome.Focus();
    }

谢谢!

ps:我真的不喜欢asp.net我花了更多时间修复错误而不是开发新功能。

ps:对不起我的英语。

ps:如果我删除了onkeydown和onkeyup事件,那么IE中的文本会被触发,但我也是这个事件。

1 个答案:

答案 0 :(得分:0)

您是否知道OnTextChanged事件仅在您离开文本框时触发?如果要在KeyUp中触发事件,可以在标记中添加__doPostBack并删除自动后备。

你可以这样使用。

<asp:TextBox ID="txtCnpj" runat="server" CssClass="txt" Width="200px"
    onkeyup="Mascara(this,Cnpj); _doPostBack('txtCnpj', '');" 
    MaxLength="18" ValidationGroup="txtCnpj"
    OnTextChanged="txtCnpj_TextChanged"></asp:TextBox>

或者您也可以使用

<asp:TextBox ID="txtCnpj" runat="server" CssClass="txt" Width="200px"
        MaxLength="18" ValidationGroup="txtCnpj"
        OnTextChanged="txtCnpj_TextChanged"></asp:TextBox>

$('[id$="txtCnpj"]').on('keypress', function () {
    Mascara(this, Cnpj);
})