Domanda

Sto cercando di usare jQuery per intercettare i tasti di controllo-A sulla mia pagina Web, in questo modo:

$(document).keypress(function (event) {
    if (event.ctrlKey && (event.which == 65 || event.which == 97)) {
        event.preventDefault();
        // ...
    }
});

Funziona su Firefox, ma su IE7, il mio gestore eventi non viene chiamato e viene invece selezionato tutto il testo sulla pagina (come accade su Firefox senza il gestore eventi).

Esiste un modo per intercettare i control-A su IE?

È stato utile?

Soluzione

Funziona con FF 3.5 e IE7 per me:

    $(function() {
        var isCtrl = false; 

        $(document).keyup(function (e) { 
            if(e.keyCode == 17)
                isCtrl = false;
        }).keydown(function (e) { 
            if(e.keyCode == 17)
                isCtrl = true;

            if(e.keyCode == 65 && isCtrl == true) {
                alert('Intercepted CTRL+A');
                e.preventDefault();
            }
        }); 
    });

Altri suggerimenti

Se si restituisce false nel gestore eventi, il comportamento del browser verrà annullato. A seconda del browser, può comportarsi diversamente (ad esempio, la pressione dei tasti si attiverà ancora su Firefox dopo che un keydown lo ha annullato, mentre IE lo interromperà).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top