none
Como hacer saltar y capturar el evento en javascript de textbox, habiendo llenado ese textbox desde es servidor RRS feed

  • Pregunta

  • Hola a todos!

    Asp.net 3.5 y c#

    Estoy intentando llenar un textbox desde servidor mediante una consulta a bbdd, luego quiero que en cliente puede hacer saltar el evento textchange sin tocar en control, para que mediante javascript me salte una alerta con el texto que he introducido en el servidor :Alert("texto del textbox").

    No se si me he explicado :s

    Espero me podáis ayudar!

    Gracias!

    Pablo.


    Un Saludo, Pablo.

    miércoles, 6 de junio de 2012 10:53

Respuestas

  • Déjame ver si te entiendo. Lo que quieres es que cada 5 segundos, se actualice el valor de un textbox salga un mensaje con la fecha y hora. ¿Es eso?

    Si es eso, olvídate de los eventos del lado del servidor. Lo que tienes que hacer es un timer del lado del cliente: 

    http://www.w3schools.com/js/js_timing.asp

    Al final vas a tener:

    1) En tu página, un script estableciendo el timer con la función setTimeout()

    2) Una función que responda al setTimeout, cambie el valor del textbox y haga un Alert mostrando la fecha y la hora.

    Saludos,

    Y.


    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    jueves, 7 de junio de 2012 9:14

Todas las respuestas

  • algo no me cierra

    ese evento textchange que comentas es el evento en el servidor o en el cliente ? porque despues del alert() pero esto imagino es el mensaje de javascript

    o sea como que no concuerda una accion y otra, ademas como puede lanzarse un evento sin que el boton lo genere

    puede desde .net lanzar codigo cliente usando

    private void textbox1_TextChanged(...){
    
        string script = string.Format("alert('{0}')", textbox1.Text);
    
        ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, true);
    
    }

    ese codigo luego de ejecutarse al volver al cliente lanzara la alerta, pero no se si es esto lo que buscas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 6 de junio de 2012 11:54
  • Hola a todos!

    Asp.net 3.5 y c#

    Estoy intentando llenar un textbox desde servidor mediante una consulta a bbdd, luego quiero que en cliente puede hacer saltar el evento textchange sin tocar en control, para que mediante javascript me salte una alerta con el texto que he introducido en el servidor :Alert("texto del textbox").

    No se si me he explicado :s

    Espero me podáis ayudar!

    Gracias!

    No entiendo a qué te refieres con "hacer saltar el evento textchange sin tocar el control". El evento se dispara cuando cambias el contenido del control, si no no se dispara y además, NO debe dispararse. ¿por qué no nos cuentas qué es lo que quieres hacer sin entrar en los detalles de cómo hacerlo? Por ejemplo: "Cuando escriba algo en el textbox y salga de él pulsando el tabulador, que salga un mensaje mostrando el texto ingresado en el control" o si no: "Cuando el usuario presione un botón quiero que me salga un mensaje mostrando el texto que contiene el control textbox".

    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    miércoles, 6 de junio de 2012 12:26
  • Hola Leandro!

    El evento es del cliente.

    Te pongo mi código, porque no se me da bien explicarme ;)

    	protected void Page_Load(object sender, EventArgs e)
            {
                timerPrueba.Interval = 5000;
                this.txtPrueba.Attributes.Add("CustomTextChanged", "Changed()");
            }
           
            protected void timerPrueba_Tick(object sender, EventArgs e)
            {
    			txtPrueba.Text = Convert.ToString(DateTime.Now);
            }
    


    <script language="javascript" type="text/javascript">
         function ChangeFocus() {
             alert(document.getElementById('<%= txtPrueba.ClientID %>').value);
         }
    </script>
    <div>
        <asp:UpdatePanel ID="upnMessages" runat="server">
            <ContentTemplate>
                <asp:Timer ID="timerPrueba" runat="server" OnTick="timerPrueba_Tick" />
                <asp:TextBox ID="txtPrueba" runat="server" Width="800px" CustomTextChanged="Changed();"/>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>

    Con esto no logro que se muestre el mensaje de javascript.

    Esto esta implementado en un "usercontrol" y lo he introducido en mi masterpage, no creo que tenga nada que ver.

    Espero me puedas ayudar.

    Gracias!


    Un Saludo, Pablo.

    miércoles, 6 de junio de 2012 13:09
  • El Page_Load ejecuta del lado del servidor (que alguien me corrija si estoy equivocado, por favor). Por lo tanto, el Tick del timer nunca llega a actualizar nada en la página que ve el usuario. Podrías forzar un postback para que te tome el cambio haciendo un Meta-Refresh pero me parece poco elegante, complicado y peligroso. Lo que yo haría sería implementar el timer en el lado del cliente.

    Por otra parte (y de nuevo, corregidme si estoy equivocado) me parece que  CustomTextChanged no es un evento válido de un Textbox. En todo caso tendrías que declararlo así: 

    <asp:TextBox ID="txtPrueba" runat="server" Width="800px" Changed="LaFuncionQueManejaElEvento();"/>

    Saludos,

    Y.


    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    miércoles, 6 de junio de 2012 13:16
  • Hola Yván!

    Si que esta funcionando Yván, el problema es que no consigo mostrar un mensaje cada vez que se actualiza el textbox, te comento. Cuando hago esto: txtPrueba.Text = Convert.ToString(DateTime.Now); dado que el textbox esta dentro de un updatepanel, en la pagina se muestra la fecha y hora, esto sucede cada 5 segundos, esto funciona correctamente, pero cada vez que cambia el texbox con la fecha, no consigo capturar el evento "CustomChanged" o "Changed" desde el lado del cliente para poder lanzar un mensaje con javascript.

    Alerta

    Yo necesitaría que se viera esto. El textbox se ejecuta correctamente! que tengo que hacer para que se me muestre el mensaje?


    Un Saludo, Pablo.


    • Editado Harpocon miércoles, 6 de junio de 2012 13:42
    miércoles, 6 de junio de 2012 13:27
  • Déjame ver si te entiendo. Lo que quieres es que cada 5 segundos, se actualice el valor de un textbox salga un mensaje con la fecha y hora. ¿Es eso?

    Si es eso, olvídate de los eventos del lado del servidor. Lo que tienes que hacer es un timer del lado del cliente: 

    http://www.w3schools.com/js/js_timing.asp

    Al final vas a tener:

    1) En tu página, un script estableciendo el timer con la función setTimeout()

    2) Una función que responda al setTimeout, cambie el valor del textbox y haga un Alert mostrando la fecha y la hora.

    Saludos,

    Y.


    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    jueves, 7 de junio de 2012 9:14
  • Hola Yván!

    Siento tardar en contestarte! 

    Ok! lo hice así y me funciono!  

    gracias!


    Un Saludo, Pablo.

    martes, 12 de junio de 2012 15:43