¿Cómo puedo detectar presionar Enter en el teclado usando jQuery?

Resuelto chris asked hace 15 años • 20 respuestas

Me gustaría detectar si el usuario ha presionadoEnter usando jQuery.

¿Cómo es esto posible? ¿Requiere un complemento?

Parece que necesito usar elkeypress() método.

¿Hay problemas del navegador con ese comando? ¿Hay algún problema de compatibilidad del navegador que deba conocer?

chris avatar Jun 11 '09 13:06 chris
Aceptado

El objetivo de jQuery es que no tienes que preocuparte por las diferencias entre navegadores. Estoy bastante seguro de que puedes entertener 13 años con seguridad en todos los navegadores. Con eso en mente, puedes hacer esto:

$(document).on('keypress',function(e) {
    if(e.which == 13) {
        alert('You pressed enter!');
    }
});
Paolo Bergantino avatar Jun 11 '2009 06:06 Paolo Bergantino

Escribí un pequeño complemento para que sea más fácil vincular el evento "al presionar la tecla Intro":

$.fn.enterKey = function (fnc) {
    return this.each(function () {
        $(this).keypress(function (ev) {
            var keycode = (ev.keyCode ? ev.keyCode : ev.which);
            if (keycode == '13') {
                fnc.call(this, ev);
            }
        })
    })
}

Uso:

$("#input").enterKey(function () {
    alert('Enter!');
})
Andrea avatar Apr 01 '2012 14:04 Andrea

No pude hacer que funcionara el código publicado por Paolo Bergantino , pero cuando lo cambié a $(document)y e.whichen su lugar e.keyCodedescubrí que funcionaba sin problemas.

$(document).keypress(function(e) {
    if(e.which == 13) {
        alert('You pressed Enter!');
    }
});

Enlace al ejemplo en JS Bin

Ian Roke avatar Jun 21 '2011 10:06 Ian Roke

Encontré que esto es más compatible con todos los navegadores:

$(document).keypress(function(event) {
    var keycode = event.keyCode || event.which;
    if(keycode == '13') {
        alert('You pressed a "enter" key in somewhere');    
    }
});
jesal avatar Mar 13 '2012 19:03 jesal

Puedes hacer esto usando el controlador de eventos jQuery 'keydown':

$("#start").on("keydown", function(event) {
  if(event.which == 13)
    alert("Entered!");
});
Nasruddin avatar Oct 11 '2013 07:10 Nasruddin