2010-06-10 3 views
0

У меня то же самое, есть много TextBoxes с событием TextChanged и AutoPostback = true и работает во всех браузерах (Chrome, Opera, Firefox 3.6), за исключением IE 8, IE 6/7, я не тестировал.TextBox не запускает событие TextChanged в IE 8, AutoPostback истинно

Я не хочу помещать событие onblur во все свои текстовые поля, потому что есть много страниц со многими 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 изменяется, но я тоже знаю эти события.

+0

Можете ли вы показать нам код для 'Тушь()'? – egrunin

+0

согласился - я предполагаю, что это, возможно, ошибка в Mascara(), которая предотвращает появление события postback в IE. Вы пытались удалить события onKeyDown и onKeyUp и посмотреть, работает ли postback? – Dan

ответ

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); 
}) 
Смежные вопросы