none
Ejecutar evento al presionar enter en TextBox RRS feed

  • Pregunta

  • Buenos días, deseaba ejecutar en evento al presionar enter en un textbox, dicho campo de texto esta en el masterpage que busca algo en especifico, el código lo tengo de la siguiente forma:

    <asp:Panel ID="Panel1" runat="server" CssClass="Pnlbusqueda" DefaultButton="btnBuscar" >
      <asp:TextBox ID="searchfield" runat="server" value="Enter a keyword"  Height="16px" Width="270px" ></asp:TextBox>
                <asp:Button ID="btnBuscar" runat="server" OnClick="btnBuscar_Click" Visible="False" />
      </asp:Panel>

    el evento del boton:

     protected void btnBuscar_Click(object sender, EventArgs e)
            {
                string neces = searchfield.Text;
                Response.Redirect("/Busqueda.aspx?b=" + neces);
            }

    No funciona, puse un punto de interrupción  no ingresa al método, o estoy haciendo mal algo agradeceria su opinion.


    lunes, 4 de mayo de 2015 14:58

Respuestas

  • Hola Luis Vivanco veo que ese evento le pertenece a un boton pero tampoco veo en tu control TextBox que este asignado dicho evento en su Evento KeyPress, podria revisar este articulo:

    KeyPress Event of TextBox in ASP.NET

    Otra solución seria que uses TextChanged.

    Espero haberte ayudado.

    • Marcado como respuesta Luis Vivanco martes, 5 de mayo de 2015 1:30
    lunes, 4 de mayo de 2015 15:14
  • hola

    no definas ningun DefaultButton en la pagina y prueba capturar el keyup por medio de jquery

    Trigger a button click with JavaScript on the Enter key in a text box

    de esta forma podrias detectar el enter en ese textbox y lanzar el click de un boton usando el selector de jquery

    Nota. si usas controles de asp.net recuerda aplicar un selector que sea

    $("[id*='textbox1']").keyup(....

    recuerda que asp.net cambia el nombre de los controles por eso buscas por aproximacion usando el *=

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Luis Vivanco martes, 5 de mayo de 2015 1:29
    lunes, 4 de mayo de 2015 20:11
  • Realiza lo siguiente entonces en la misma pagina  agregas el siguientel código de javascript

     <!--Esto es para que el cliente de enter lo que hace es buscar el boton buscar y da click internamente-->
          <script lang="javascript" type="text/javascript">
              function darclick(field, event) {
                  var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
                  if (keyCode == 13) {     
                      var obj = document.getElementById("<%=btnBuscar.ClientID%>");
                     obj.click();
                 }
             }

    function Enter(field, event) {
        var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
        if (keyCode == 13) {
            var i;
            for (i = 0; i < field.form.elements.length; i++)
                if (field == field.form.elements[i])
                    break;
            i = (i + 1) % field.form.elements.length;
            field.form.elements[i].focus();
            return false;
        }
        else
            return true;

    }

       </script>

    en el cuadro de texto agregas lo siguiente

     <asp:Textbox " ID="searchfield" onKeypress="return Enter(this,event)"   onKeydown="return darclick(this, event)"  runat="server"></asp:Textbox>


    ProgramacionYa.net
    Si pequeña es la Patria, uno grande la sueña
    Rubén Darío
    Principe de las letras Castellanas
    Poeta Nicaragüense

    lunes, 4 de mayo de 2015 21:48

Todas las respuestas

  • Hola Luis Vivanco veo que ese evento le pertenece a un boton pero tampoco veo en tu control TextBox que este asignado dicho evento en su Evento KeyPress, podria revisar este articulo:

    KeyPress Event of TextBox in ASP.NET

    Otra solución seria que uses TextChanged.

    Espero haberte ayudado.

    • Marcado como respuesta Luis Vivanco martes, 5 de mayo de 2015 1:30
    lunes, 4 de mayo de 2015 15:14
  • hola

    no defines un boton por defecto de la pagina?

    ASP.NET 2.0 - Enter Key - Default Submit Button

    si defines esto al presionar enter deberia lanzar el evento de ese boton

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 4 de mayo de 2015 15:17
  • Hola, implemente algo parecido al link que me recomendo y lo tengo de la siguiente manera:

    <form id="frminicio" runat="server" defaultbutton="btnBuscar">

    <asp:Panel ID="Panel1" runat="server" CssClass="Pnlbusqueda" DefaultButton="btnBuscar" >
            <asp:TextBox  ID="txtbus"  runat="server" Height="16px" Width="270px" ></asp:TextBox>
            <asp:Button ID="btnBuscar" runat="server" OnClick="btnBuscar_Click" Visible="False" />
    </asp:Panel>

    </form>

     protected void Page_Load(object sender, EventArgs e)
            {
               Panel1.DefaultButton = btnBuscar.ID;
            }

            protected void btnBuscar_Click(object sender, EventArgs e)
            {
                string neces = txtbus.Text;
                Response.Redirect("/Busqueda.aspx?b=" + neces);
            }

    Pero no me funciona, o esque el panel ya no lo debo utilizar.

    Trato de implementarlo en el masterpage para una barra de busqueda


    lunes, 4 de mayo de 2015 19:17
  • hola

    no definas ningun DefaultButton en la pagina y prueba capturar el keyup por medio de jquery

    Trigger a button click with JavaScript on the Enter key in a text box

    de esta forma podrias detectar el enter en ese textbox y lanzar el click de un boton usando el selector de jquery

    Nota. si usas controles de asp.net recuerda aplicar un selector que sea

    $("[id*='textbox1']").keyup(....

    recuerda que asp.net cambia el nombre de los controles por eso buscas por aproximacion usando el *=

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Luis Vivanco martes, 5 de mayo de 2015 1:29
    lunes, 4 de mayo de 2015 20:11
  • Realiza lo siguiente entonces en la misma pagina  agregas el siguientel código de javascript

     <!--Esto es para que el cliente de enter lo que hace es buscar el boton buscar y da click internamente-->
          <script lang="javascript" type="text/javascript">
              function darclick(field, event) {
                  var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
                  if (keyCode == 13) {     
                      var obj = document.getElementById("<%=btnBuscar.ClientID%>");
                     obj.click();
                 }
             }

    function Enter(field, event) {
        var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
        if (keyCode == 13) {
            var i;
            for (i = 0; i < field.form.elements.length; i++)
                if (field == field.form.elements[i])
                    break;
            i = (i + 1) % field.form.elements.length;
            field.form.elements[i].focus();
            return false;
        }
        else
            return true;

    }

       </script>

    en el cuadro de texto agregas lo siguiente

     <asp:Textbox " ID="searchfield" onKeypress="return Enter(this,event)"   onKeydown="return darclick(this, event)"  runat="server"></asp:Textbox>


    ProgramacionYa.net
    Si pequeña es la Patria, uno grande la sueña
    Rubén Darío
    Principe de las letras Castellanas
    Poeta Nicaragüense

    lunes, 4 de mayo de 2015 21:48
  • Ya lo probe y el problema que tenia era que  el boton visible=false, cambie eso y todo salio bien.

    Gracias a todos por las sugerencias.


    martes, 5 de mayo de 2015 1:29