4 Stimmen

Abfangen aller Tastendrücke mit jQuery, bevor sie verarbeitet werden

Ich habe eine Webseite, und ich brauche, um alle Tastendrücke abzufangen, bevor sie an was auch immer Element in der Dom hat den Fokus versendet werden. Wenn der Benutzer etwas eintippt wie ~goto:/index.html: (die in der Tat von einem Barcode-Scanner stammen werden) muss ich die Tastendrücke nach der ~ um sie zu analysieren, sobald ich zum zweiten : . Ich habe es geschafft, etwas mit dem $(document).keypress() wie folgt:

$(document).ready(function() {
  $(document).keypress(function(e) {
    // do the processing here and 
    // return false when ignoring keystrokes
  });
});

Das Problem ist, dass ich den Tastendruck erhalte, nachdem er zum fokussierten Element gegangen ist. Irgendwie, um es vor, so dass ich in der Tat ablehnen kann es zu bekommen?

4voto

Jeremy B. Punkte 9114

Mehr Erfolg haben Sie wahrscheinlich mit Taste unten es sollte vor dem Ereignis ausgelöst werden

auch dies tun

$(document).keydown(function(e) {
    e.preventDefault();
});

Durch den Aufruf von preventDefault wird der normale Ablauf des Tastendrucks gestoppt. Eigentlich können Sie mit keypress bleiben und nur die preventDefault verwenden, um Ihre Abfangen Bedürfnisse zu beenden.

3voto

Daniel Punkte 2361

Lesen Sie dies über Event Bubbling. http://www.quirksmode.org/js/events_order.html

Das funktioniert bei Firefox:

 document.addEventListener('keypress',function(e){alert('body1'); e.cancelBubble  = true;},true)

Ich bin nicht sicher, was für z.B. arbeiten wird, wie das Dokument, das ich verlinkt, in z.B. das Ereignis Blasen von innen nach oben sagt. Sie müssen möglicherweise einen anderen Weg um dies zu versuchen. z.B. könnten Sie einen Ereignishandler für alle das Element hinzufügen, die Sie nicht wollen, dass sie das Ereignis behandeln und dann verhindern, dass sie das Ereignis in diesem Ereignishandler behandeln.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X