¿Cómo detectar la pulsación de la tecla Escape?
¿Cómo detectar la pulsación de la tecla Escape en IE, Firefox y Chrome? El siguiente código funciona en IE y alertas 27
, pero en Firefox alerta0
$('body').keypress(function(e){
alert(e.which);
if(e.which == 27){
// Close my modal window
}
});
Nota: keyCode
está quedando obsoleto , utilícelo key
en su lugar.
function keyPress (e) {
if(e.key === "Escape") {
// write your logic here.
}
}
Fragmento de código:
Mostrar fragmento de código
keyCode
y la pulsación de teclas están en desuso.
Parece
keydown
ykeyup
funciona.
$(document).keyup(function(e) {
if (e.key === "Escape") { // escape key maps to keycode `27`
// <DO YOUR WORK HERE>
}
});
¿Qué código clave para la tecla de escape con jQuery?
El keydown
evento funcionará bien para Escape y tiene la ventaja de permitirle utilizarlo keyCode
en todos los navegadores. Además, es necesario vincular al oyente document
y no al cuerpo.
Actualización mayo 2016
keyCode
ahora está en proceso de quedar obsoleto y la mayoría de los navegadores modernos ofrecen la key
propiedad ahora, aunque todavía necesitará un respaldo para un soporte decente del navegador por ahora (al momento de escribir este artículo, las versiones actuales de Chrome y Safari no lo admiten).
La actualización de septiembre de 2018
evt.key
ahora es compatible con todos los navegadores modernos.
document.onkeydown = function(evt) {
evt = evt || window.event;
var isEscape = false;
if ("key" in evt) {
isEscape = (evt.key === "Escape" || evt.key === "Esc");
} else {
isEscape = (evt.keyCode === 27);
}
if (isEscape) {
alert("Escape");
}
};
Click me then press the Escape key
Usando JavaScript puedes verificar el funcionamiento de jsfiddle
document.onkeydown = function(evt) {
evt = evt || window.event;
if (evt.keyCode == 27) {
alert('Esc key pressed.');
}
};
Usando jQuery puedes verificar el funcionamiento de jsfiddle
jQuery(document).on('keyup',function(evt) {
if (evt.keyCode == 27) {
alert('Esc key pressed.');
}
});
JS puro
puede adjuntar un oyente al keyUp
evento del documento.
Además, si desea asegurarse de que no se presione ninguna otra tecla junto con Esc
la tecla, puede usar los valores de ctrlKey
, altKey
y shifkey
.
document.addEventListener('keydown', (event) => {
if (event.key === 'Escape') {
//if esc key was not pressed in combination with ctrl or alt or shift
const isNotCombinedKey = !(event.ctrlKey || event.altKey || event.shiftKey);
if (isNotCombinedKey) {
console.log('Escape key was pressed with out any group keys')
}
}
});