Wie kann man die Rücktaste mit jQuery abfangen? [duplicate]

Lesezeit: 3 Minuten

Es wird nicht angezeigt, dass die jQuery-Methoden keyup, keydown oder keypress ausgelöst werden, wenn die Rücktaste gedrückt wird. Wie würde ich das Drücken der Rücktaste abfangen?

  • Nur zur Verdeutlichung möchte ich beim Drücken der Rücktaste einfangen und eine Aktion ausführen. Ich ändere den aktivierten Status einiger Schaltflächen auf der Seite, wenn das letzte Zeichen aus einem Textfeld entfernt wird. Daher möchte ich immer noch, dass die Rücktaste ihren normalen Betrieb ausführt.

    – ChrisP

    8. Februar ’11 um 17:17


  • Das ist nicht wahr. Es erscheint in Keyup- und Keydown-Methoden. Erscheint nur nicht bei Tastendruck.

    – Linie

    28. November ’14 um 12:50

  • @ RickSmith Ich stimme nicht zu. Die Frage, auf die Sie sich beziehen, war in JavaScript, während das OP hier in jQuery stellt. Es kann einen Grund geben, warum jemand die Antwort auf die eine oder andere Weise haben möchte.

    – Racil Hilan

    4. September ’15 um 21:29

  • @RacilHilan Sie haben Recht, dies sollte kein Duplikat sein.

    – Rick Smith

    8. September ’15 um 16:26

Probier diese :

 $('html').keyup(function(e){if(e.keyCode == 8)alert('backspace trapped')})  

  • auch auf 46 prüfen (löschen)

    – Andres SK

    13. Dezember ’11 um 16:32

  • Es funktioniert, aber Sie können auf diese Weise das modale Fenster nicht anzeigen und aufhören, zur vorherigen Seite zurückzukehren.

    – Marek Bar

    31. Juli ’13 um 10:16

  • Versuchen Sie e.preventDefault() und machen Sie DANN das zweifelhafte Ding 🙂

    – jave.web

    14. August ’13 um 9:37

  • Vollständiges Codebeispiel, das verhindert, dass zur vorherigen Seite gewechselt wird, sowie die folgenden jQuery-KeyCode-Konstanten verwendet werden.

    – Rick Smith

    4. Sept. ’15 um 16:00

Wie kann man die Rucktaste mit jQuery abfangen duplicate
Autobahn des Lebens

Reguläres Javascript kann verwendet werden, um die Rücktaste abzufangen. Sie können die Methode event.keyCode verwenden. Der Schlüsselcode ist 8, also würde der Code ungefähr so ​​aussehen:

if (event.keyCode == 8) {
    // Do stuff...
}

Wenn Sie nach beiden suchen möchten [delete] (46) sowie die [backspace] (8) Tasten, verwenden Sie Folgendes:

if (event.keyCode == 8 || event.keyCode == 46) {
    // Do stuff...
}

Arbeiten an der gleichen Idee wie oben, aber etwas verallgemeinernd. Da die Rücktaste bei den Eingabeelementen gut funktionieren sollte, sollte sie jedoch nicht funktionieren, wenn der Fokus ein Absatz oder so ist, da dort die Seite dazu neigt, zur vorherigen Seite im Verlauf zurückzukehren.

$('html').on('keydown' , function(event) {

        if(! $(event.target).is('input')) {
            console.log(event.which);
           //event.preventDefault();
           if(event.which == 8) {
            //  alert('backspace pressed');
            return false;
         }
        }
});

Rückgabe von false => Sowohl event.preventDefault als auch event.stopPropagation sind wirksam.

  • Upvote für Keydown statt Keyup.

    – Matas Vaitkevicius

    18. August ’15 um 10:50


Wie kann man die Rucktaste mit jQuery abfangen duplicate
Rick Smith

Das Standardverhalten für die Rücktaste in den meisten Browsern besteht darin, zur vorherigen Seite zurückzukehren. Wenn Sie tun nicht Wenn Sie dieses Verhalten wünschen, müssen Sie den Anruf sicherstellen preventDefault(). Aber wie das OP andeutet, wenn Sie es immer anrufen preventDefault() Sie machen es auch unmöglich, Dinge in Textfeldern zu löschen. Der folgende Code hat eine Lösung, die von dieser Antwort angepasst wurde.

Anstatt hartcodierte keyCode-Werte zu verwenden (einige Werte ändern sich je nach Browser, obwohl ich das für Backspace oder Delete nicht gefunden habe), jQuery hat keyCode-Konstanten bereits definiert. Dies macht Ihren Code lesbarer und kümmert sich für Sie um alle keyCode-Inkonsistenzen.

// Bind keydown event to this function.  Replace document with jQuery selector
// to only bind to that element.
$(document).keydown(function(e){

    // Use jquery's constants rather than an unintuitive magic number.
    // $.ui.keyCode.DELETE is also available. <- See how constants are better than '46'?
    if (e.keyCode == $.ui.keyCode.BACKSPACE) {

        // Filters out events coming from any of the following tags so Backspace
        // will work when typing text, but not take the page back otherwise.
        var rx = /INPUT|SELECT|TEXTAREA/i;
        if(!rx.test(e.target.tagName) || e.target.disabled || e.target.readOnly ){
            e.preventDefault();
        }

       // Add your code here.
     }
});

.

435730cookie-checkWie kann man die Rücktaste mit jQuery abfangen? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy