Domanda

Ho un gestore di pressione dei tasti su una pagina web assegnata all'elemento body. Voglio davvero che sia attivo ovunque nella pagina web. O almeno così pensavo. Gli eventi di pressione dei tasti nei moduli di input testuali attivano anche il gestore del corpo, il che ha un senso, ma che non voglio.

Idealmente, vorrei mantenere il gestore della pressione dei tasti assegnato all'elemento body e in qualche modo escludere solo i moduli di input. Esiste un modo per interrompere l'evento a livello di input e impedirne la propagazione al corpo? (O è anche il modo giusto di guardare gli eventi DOM HTML?)

È stato utile?

Soluzione

Sarebbe più semplice semplicemente controllare quale elemento ha attivato l'evento nel gestore della pressione dei tasti e filtrare gli elementi di input:

document.onkeypress = function(evt) {
    evt = evt || window.event;
    var target = evt.target || evt.srcElement;
    if ( !/INPUT|TEXTAREA|SELECT|BUTTON/.test(target.nodeName) ) {
        // Do stuff
    }
};
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top