none
Evento TextChanged não funciona. RRS feed

  • Pergunta

  • Olá, quando saio do campo (textbox) ele não dispara o evento textChanged, o campo está setado o AutoPostBack = "True", o mais engraçado é que as vezes funciona, já procurei aqui no forúm outras soluções, mas nada que resolvesse.

    PS: essa minha página contém ajax.

    protected void txtValor_TextChanged(object sender, EventArgs e)
            {
                if (txtValor.Text != string.Empty)
                {
                    lblTotalVenda.Text = ((Convert.ToDecimal(txtValor.Text) * Convert.ToInt32(txtQtde.Text)) + Convert.ToDecimal(lblTotalVenda.Text)).ToString();
                }
            }
    <asp:TextBox ID="txtValor" runat="server" onkeyup="formataValor(this,event);" 
                            CssClass="campo" Enabled="False" 
                            ontextchanged="txtValor_TextChanged" AutoPostBack="True"></asp:TextBox>



    segunda-feira, 13 de fevereiro de 2012 10:40

Respostas

  • fiz da forma como vc explicou acessei o link vi o problema do usuário do post, mas mesmo assim não funcionou, tive que fazer de outra forma(não muito correta), obrigado a compreensão de todos.
    • Marcado como Resposta Harley Araujo sexta-feira, 17 de fevereiro de 2012 10:11
    quarta-feira, 15 de fevereiro de 2012 00:25

Todas as Respostas

  • Olá Thiago,

    Que tipo de Ajax vc tem na página?

    Se remover esse Ajax da página o campo funciona corretamente?

    Esse configuração "Enabled=False" esta como True quando executa seus testes?

    Esse evento é disparado apenas quando o valor do TextBox é alterado. Na verdade ele não funciona como um "LostFocus".

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    segunda-feira, 13 de fevereiro de 2012 10:47
  • Bom dia, não há muito o que fazer, como o Fernando falou o que pode estar acontecendo é outro código estar influenciando o evento, e o "Enabled" tem que estar true obviamente senão num da nem pra digitar no campo.

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="textChanged.aspx.cs" Inherits="JQTest.textChanged" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server" Enabled="true"
                 AutoPostBack="true" OnTextChanged="TextBox1_OnChanged"></asp:TextBox>
            <br />
            <br />
            <asp:Label ID="lblTotalVenda" runat="server" Text=""></asp:Label>
        </div>
        </form>
    </body>
    </html>
    

            protected void TextBox1_OnChanged(object sender, EventArgs e)
            {
                lblTotalVenda.Text += "teste ";
            }
    Sempre que você digitar algo no campo e sair do campo o evento será disparado, ele não funciona com um KeyPress. :)


    Rodrigo Reis Ferreira
    Microsoft Certified

    segunda-feira, 13 de fevereiro de 2012 11:09
  • Olá, o controle ajax que estou usando é do próprio VS 2010, e o campo quando vou usar ele fica enabled = true, e não testei sem ajax.
    segunda-feira, 13 de fevereiro de 2012 12:50
  • Tem como postar uma área maior do seu código aspx para dar uma olhada?

    Rodrigo Reis Ferreira
    Microsoft Certified

    segunda-feira, 13 de fevereiro de 2012 16:46
  • Esta página é bem simples nela contém o scriptmanager e o updateprogress, e herda de uma masterpage.

    os textbox fica dentro do UpdatePanel

    • Editado Thiago_Porto terça-feira, 14 de fevereiro de 2012 00:06
    terça-feira, 14 de fevereiro de 2012 00:05
  • Olá Thiago,

    Vc provavelmente tem que adicionar o evento TextChange como uma trigger evento que dispara uma ação dentro do seu UpdatePanel. Só assim vc conseguirá fazer com que funcione tudo corretamente.

    Seu código dentro do seu UpdatePanel deve ficar mais ou menos assim:

    <Triggers>             
        <asp:AsyncPostBackTrigger ControlID="txtMyTexbox" EventName="TextChanged" />            
    </Triggers>
    

    Veja estes links:

    http://stackoverflow.com/questions/826023/problem-with-textbox-inside-updatepanel-not-causing-ontextchanged-event

    http://stackoverflow.com/questions/3979316/update-panel-textbox-textchanged-event-is-interfering-with-the-dropdown-select

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    terça-feira, 14 de fevereiro de 2012 11:45
  • fiz da forma como vc explicou acessei o link vi o problema do usuário do post, mas mesmo assim não funcionou, tive que fazer de outra forma(não muito correta), obrigado a compreensão de todos.
    • Marcado como Resposta Harley Araujo sexta-feira, 17 de fevereiro de 2012 10:11
    quarta-feira, 15 de fevereiro de 2012 00:25