javascript
  • jquery
  • events
  • textarea
  • 2011-07-15 12 views 13 likes 
    13
    <form name='qform'> 
    <textarea name='q' rows='3' cols='60' wrap='hard' id='q' onkeydown="if (event.keyCode == 13) document.getElementById('clickit').click()"></textarea> 
    <input type='button' value='search' id='clickit' onclick="get();"> 
    </form> 
    

    Tengo este formulario ... no tiene un botón de enviar porque estoy usando jquery y bajo esta forma hay un área div donde se mostrarán los resultados. Es un motor de búsqueda que no tiene un cuadro de entrada pero en su lugar tiene un área de texto. Esto se debe a que será un buscador de palabras múltiples.¿Cómo puedo desactivar la tecla ENTRAR en mi área de texto?

    El problema es que si presiono enter, la consulta se envía y todo está bien ... pero el enfoque en textarea baja una línea y eso es un problema para mí.

    Básicamente quiero que la función enter solo tenga esa función (enviar) y terminen nada más.

    +1

    Podrías poner el foco nuevamente en el área de texto después del envío. Pero si el usuario hace clic en el botón "buscar", ¿no se enfocará en el botón de todos modos? – RobG

    Respuesta

    9

    En la función jQuery, event.preventDefault uso y al lado haga lo que quiera. Por ejemplo

    <script> 
    $("a").click(function(event) { 
        event.preventDefault(); 
    //Do your logic here 
    }); 
    </script> 
    

    http://api.jquery.com/event.preventDefault/

    +0

    nice. ¡Esto me ayudó mucho! ¡Gracias! – www139

    10

    ¿Por qué no usar <input type="text"> si no quiere líneas múltiples? Usted mencionó que será un "buscador de palabras múltiples". ¿Por qué esto requiere un <textarea>?

    actualización

    probar este

    $('textarea').bind('keypress', function(e) { 
        if ((e.keyCode || e.which) == 13) { 
        $(this).parents('form').submit(); 
        return false; 
        } 
    }); 
    
    +0

    al igual que en google translate – faq

    +0

    Ver mi respuesta actualizada –

    +6

    Es posible que desee cambiar el 'return false;' a 'e.preventDefault()', en caso de que haya enlaces de teclas más arriba en el DOM – qwertymk

    9
    $(document).ready(function() { 
    
    $('textarea').keypress(function(event) { 
    
        if (event.keyCode == 13) { 
         event.preventDefault(); 
        } 
    }); 
    

    });

    Cuestiones relacionadas