Gibt es ein Ereignis in Jquery, das nur ausgelöst wird, wenn der Benutzer die Eingabetaste in einem Textfeld drückt? Oder ein Plugin, das hinzugefügt werden kann, um dies einzuschließen? Wenn nicht, wie würde ich ein schnelles Plugin schreiben, das dies tun würde?
javascript
jquery
jquery-events
Klicken Sie auf Upvote
quelle
quelle
e.keyCode
Tasten für einige Schlüssel, die besser zu verwendene.which
sind. Dies garantiert, dass Sie in jedem Browser dieselbe Schaltfläche verwendenquelle
Hier ist ein Plugin für dich: (Fiddle: http://jsfiddle.net/maniator/CjrJ7/ )
quelle
$
Variablen für das Plugin keine gute Idee, da dies zu Konflikten führen kann.$("#myInput").bind('click, onEnter', myCallback);
und es funktioniert, ohne dass etwas anderes benötigt wird?Hier ist ein JQuery-Plugin, um das zu tun
Um es zu verwenden, fügen Sie den Code hinzu und richten Sie ihn folgendermaßen ein:
jsfiddle davon hier http://jsfiddle.net/VrwgP/30/
quelle
func.apply(this)
diese Weise aufrufen . Auf diese Weise können Sie innerhalb der Rückruffunktionthis
wie gewohnt auf das Element zugreifen, für das das Ereignis ausgelöst wurde.e.preventDefault(); e.stopPropagation();
dasif (e.keyCode)
Bit hinzu.Es ist zu beachten, dass die Verwendung von
live()
in jQuery seit der Version veraltet ist1.7
und in jQuery entfernt wurde1.9
. Stattdessen wird die Verwendung vonon()
empfohlen.Ich würde die folgende Bindungsmethode dringend empfehlen, da sie die folgenden potenziellen Herausforderungen löst:
document.body
und Übergeben von $ selector als zweites Argument anon()
können Elemente angehängt, getrennt, hinzugefügt oder aus dem DOM entfernt werden, ohne dass erneut bindende oder doppelt bindende Ereignisse behandelt werden müssen. Dies liegt daran, dass das Ereignisdocument.body
nicht$selector
direkt, sondern angehängt ist. Dies bedeutet,$selector
dass es hinzugefügt, entfernt und erneut hinzugefügt werden kann und das daran gebundene Ereignis niemals geladen wird.off()
voron()
, kann dieses Skript lebt entweder innerhalb innerhalb des Hauptkörpers der Seite oder im Körper eines AJAX - Aufruf, ohne sich um versehentlich doppelt Bindungsereignisse zu kümmern.$(function() {...})
kann dieses Skript erneut entweder vom Hauptteil der Seite oder vom Hauptteil eines AJAX-Aufrufs geladen werden.$(document).ready()
wird nicht für AJAX-Anfragen ausgelöst, während dies der$(function() {...})
Fall ist.Hier ist ein Beispiel:
quelle
Wenn Ihre Eingabe ist
search
, können Sie auchon 'search'
event verwenden. Beispiel.
quelle
HTML Quelltext:-
Java Script Code
Ihr Formular verfügt nicht über die Standard-Senden-Schaltfläche
quelle
Eine weitere subtile Variation. Ich habe mich für eine leichte Gewaltenteilung entschieden, daher habe ich ein Plugin, mit dem ich die Eingabetaste abfangen kann. Dann binde ich mich normalerweise an Ereignisse:
Und dann im Einsatz:
Mit dieser Variante können Sie die Ereignisdelegierung verwenden (um an Elemente zu binden, die Sie noch nicht erstellt haben).
quelle
Ich konnte das
keypress
Ereignis nicht für die Eingabetaste auslösen und kratzte mir einige Zeit am Kopf, bis ich die jQuery-Dokumente gelesen hatte:" Das Tastendruckereignis wird an ein Element gesendet, wenn der Browser Tastatureingaben registriert. Dies ähnelt dem Keydown-Ereignis, außer dass Modifikator- und nicht druckbare Tasten wie Shift, Esc und Delete Keydown-Ereignisse auslösen, jedoch keine Tastendruckereignisse. " ( https://api.jquery.com/keypress/ )
Ich musste das Ereignis
keyup
oder verwendenkeydown
, um einen Druck auf die Eingabetaste zu erhalten.quelle