¿Cómo detectar la pulsación de la tecla Escape?

Resuelto Mithun Sreedharan asked hace 14 años • 11 respuestas

¿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
    }
});
Mithun Sreedharan avatar Jul 30 '10 14:07 Mithun Sreedharan
Aceptado

Nota: keyCodeestá quedando obsoleto , utilícelo keyen su lugar.

function keyPress (e) {
    if(e.key === "Escape") {
        // write your logic here.
    }
}

Fragmento de código:

Mostrar fragmento de código


keyCodey la pulsación de teclas están en desuso.

Parece keydowny keyupfunciona.


$(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?

Jigar Joshi avatar Jul 30 '2010 07:07 Jigar Joshi

El keydownevento funcionará bien para Escape y tiene la ventaja de permitirle utilizarlo keyCodeen todos los navegadores. Además, es necesario vincular al oyente documenty no al cuerpo.

Actualización mayo 2016

keyCodeahora está en proceso de quedar obsoleto y la mayoría de los navegadores modernos ofrecen la keypropiedad 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
Expandir fragmento

Tim Down avatar Jul 30 '2010 08:07 Tim Down

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.');
    }
});
Subodh Ghulaxe avatar Jul 11 '2014 06:07 Subodh Ghulaxe

JS puro

puede adjuntar un oyente al keyUpevento del documento.

Además, si desea asegurarse de que no se presione ninguna otra tecla junto con Escla tecla, puede usar los valores de ctrlKey, altKeyy 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')
              
            }
        }
    });
Irshad avatar Oct 20 '2020 14:10 Irshad