2010-06-10 89 views
0

我有同樣的事情,有許多文本框與事件TextChanged設置和 AutoPostback = true,並且適用於所有瀏覽器(Chrome,Opera,Firefox 3.6)除IE 8,IE 6/7外我沒有測試過。TextBox不會觸發IE 8上的TextChanged事件,AutoPostback爲真

我不想將onblur事件放在我的所有文本框中,因爲有很多使用此事件的TextBox的頁面。

說明

我使用的是母版,

在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事件,text在IE中更改了fire,但是我也是這樣的事件。

+0

,你能否告訴我們'睫毛膏()'的代碼? – egrunin 2010-06-10 19:24:09

+0

同意 - 我猜他們可能是在睫毛膏(),防止在IE中發生回發事件的錯誤。您是否嘗試刪除onKeyDown和onKeyUp事件並查看回發是否有效? – Dan 2010-06-10 19:33:26

回答

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); 
}) 
相關問題