831 Stimmen

Wie kann ich erkennen, Drücken der Eingabetaste auf der Tastatur mit jQuery?

Ich würde gerne erkennen, ob der Benutzer die Taste Enter mit jQuery.

Wie ist das möglich? Ist dafür ein Plugin erforderlich?

Es sieht so aus, als müsste ich die keypress() método.

Gibt es Browser-Probleme mit diesem Befehl - z. B. Probleme mit der Browserkompatibilität, über die ich Bescheid wissen sollte?

26voto

Gibolt Punkte 32347

Utilice event.key und modernes JavaScript!

$(document).keypress(function(event) {
    if (event.key === "Enter") {
        // Do something
    }
});

Oder ohne jQuery:

document.addEventListener("keypress", function onEvent(event) {
    if (event.key === "Enter") {
        // Do something better
    }
});

Mozilla-Dokumentation

Unterstützte Browser

9voto

Ich habe diese Lösung gefunden:

$(document).ready(function(){

  $('#loginforms').keypress(function(e) {
    if (e.which == 13) {
    //e.preventDefault();
    alert('login pressed');
    }
  });

 $('#signupforms').keypress(function(e) {
    if (e.which == 13) {
      //e.preventDefault();
      alert('register');
    }
  });
});

7voto

joeln Punkte 3435

Eine geringfügige Erweiterung der Andrea's Antwort macht die Hilfsmethode nützlicher, wenn Sie auch geänderte Eingabetasten erfassen wollen (d.h., Ctrl + Enter o Shift + Enter ). Diese Variante erlaubt zum Beispiel Bindungen wie:

$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')

um ein Formular abzuschicken, wenn der Benutzer die Taste Ctrl + Enter mit Fokus auf den Textbereich des Formulars.

$.fn.enterKey = function (fnc, mod) {
    return this.each(function () {
        $(this).keypress(function (ev) {
            var keycode = (ev.keyCode ? ev.keyCode : ev.which);
            if ((keycode == '13' || keycode == '10') && (!mod || ev[mod + 'Key'])) {
                fnc.call(this, ev);
            }
        })
    })
}

(Siehe auch * Strg + Enter mit jQuery in einer TEXTAREA )

7voto

Richard Simões Punkte 11699

Es gibt eine Tastendruck() Ereignis-Methode. Die Website Enter Die ASCII-Nummer der Taste ist 13 und hängt nicht davon ab, welcher Browser verwendet wird.

4voto

jp2code Punkte 25327

In einigen Fällen müssen Sie möglicherweise die ENTER Schlüssel für einen bestimmten Bereich einer Seite, aber nicht für andere Bereiche einer Seite, wie die folgende Seite, die eine Kopfzeile <div> mit einer SUCHEN Feld.

Ich habe ein bisschen gebraucht, um herauszufinden, wie man das macht, und ich stelle dieses einfache, aber vollständige Beispiel hier für die Gemeinschaft ein.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Test Script</title>
  <script src="/lib/js/jquery-1.7.1.min.js" type="text/javascript"></script>
  <script type="text/javascript">
    $('.container .content input').keypress(function (event) {
      if (event.keyCode == 10 || event.keyCode == 13) {
        alert('Form Submission needs to occur using the Submit button.');
        event.preventDefault();
      }
    });
  </script>
</head>
  <body>
    <div class="container">
      <div class="header">
        <div class="FileSearch">
          <!-- Other HTML here -->
        </div>
      </div>
      <div class="content">
        <form id="testInput" action="#" method="post">
        <input type="text" name="text1" />
        <input type="text" name="text2" />
        <input type="text" name="text3" />
        <input type="submit" name="Submit" value="Submit" />
        </form>
      </div>
    </div>
  </body>
</html>

Link zu JSFiddle Playground : Die [Submit] Taste bewirkt nichts, aber das Drücken von ENTER aus einem der Textfeld-Steuerelemente wird das Formular nicht übermittelt.

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