¿Cómo puedo detectar presionar Enter en el teclado usando jQuery?
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?
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!');
}
});
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!');
})
No pude hacer que funcionara el código publicado por Paolo Bergantino , pero cuando lo cambié a $(document)
y e.which
en su lugar e.keyCode
descubrí que funcionaba sin problemas.
$(document).keypress(function(e) {
if(e.which == 13) {
alert('You pressed Enter!');
}
});
Enlace al ejemplo en JS Bin
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');
}
});
Puedes hacer esto usando el controlador de eventos jQuery 'keydown':
$("#start").on("keydown", function(event) {
if(event.which == 13)
alert("Entered!");
});