Außer changeerst dann, wenn das Feld den Fokus verloren hat. inputfeuert sofort.
Jcsanyi
3
Haben Sie versucht, es zu suchen?
undefiniert
2
@undefined Ja, das hätte ich, sonst hätte ich keine Frage dafür erstellt. Das einzige, was bei Google auftaucht, sind Artikel über das input Element und das Anhängen von Ereignissen.
Tritt auf, wenn der Textinhalt eines Elements über die Benutzeroberfläche geändert wird.
Es ist kein richtiger Alias, keyupda keyupes ausgelöst wird, auch wenn die Taste nichts tut (zum Beispiel: Durch Drücken und anschließendes Loslassen der Steuertaste wird ein keyupEreignis ausgelöst ).
Eine gute Möglichkeit, darüber nachzudenken, ist folgende: Es ist ein Ereignis, das ausgelöst wird, wenn sich die Eingabe ändert. Dies umfasst - ohne darauf beschränkt zu sein - das Drücken von Tasten, die die Eingabe ändern (so dass beispielsweise Ctrldas Ereignis nicht von sich aus ausgelöst wird, sondern Ctrl-Vzum Einfügen von Text) und die Auswahl einer Option für die automatische Vervollständigung im Linux-Stil -Klicken Sie auf Einfügen, Ziehen und Ablegen und viele andere Dinge.
Weitere Informationen finden Sie auf dieser Seite und in den Kommentaren zu dieser Antwort.
Wissen Sie, ob jQuery die fehlende Browserunterstützung ausmacht? (IE8, IE9 Inkonsistenzen usw.)
jcsanyi
4
Ich habe gerade 'js input event' gegoogelt. Es ist ein Händchen zu wissen, welche Begriffe verwendet werden müssen, um bei Google zu finden, was Sie wollen. es kommt mit Erfahrung. Und dann zeichnet Google natürlich alles auf und verwendet es, um zu erfahren, was Sie tatsächlich wollen. Die meisten meiner Suchanfragen beziehen sich auf API-Dokumente und Programmierfragen. Im Laufe der Zeit wurde mir klar, dass bei der Suche nach Dingen wahrscheinlich API-Dokumente und Programmierantworten angezeigt werden sollten.
J David Smith
3
Nun, ich suchte nach "jQuery input event", ich hatte keine Ahnung, dass es sich um ein ursprüngliches JS-Ereignis handelt. Auch hier stammen die ersten Ergebnisse normalerweise von SO, was ich meistens als De-facto-Antworten / offizielle Informationsquellen betrachte.
Seidenfeuer
18
inputist eigentlich mehr als nur ein Filter keyup, zum Beispiel wird es auch ausgelöst , wenn der Wert aus der Liste der zuvor verwendeten Werte ausgewählt wurde ... Es war etwas, das sehr schwer zu handhaben wäre, wenn es kein inputEreignis gäbe .
Szeryf
2
oninputWird auch ausgelöst, wenn der Text mit der Maus geändert wird (entweder per Drag & Drop oder über ein Rechtsklick-Menü oder einen mittleren Klick zum Einfügen).
Denilson Sá Maia
157
oninput Ereignis ist sehr nützlich, um Änderungen an Eingabefeldern zu verfolgen.
In IE-Version <9 wird es jedoch nicht unterstützt. Ältere IE-Versionen haben jedoch ein eigenes proprietäres Ereignis onpropertychange, das dasselbe tut wie oninput.
Sie können es also folgendermaßen verwenden:
$(':input').on('input propertychange');
Um eine vollständige Crossbrowser-Unterstützung zu haben.
Da die Eigenschaftsänderung beispielsweise für JEDE Eigenschaftsänderung ausgelöst werden kann, wird die deaktivierte Eigenschaft geändert, und Sie möchten Folgendes einschließen:
Genau das, was ich brauchte. Danke dir. (Ich hasse es, <IE9 unterstützen zu müssen.)
DaleyKD
Weitere Informationen: "Opera löst kein Eingabeereignis aus, nachdem Text in ein Eingabefeld eingefügt wurde. IE 9 löst kein Eingabeereignis aus, wenn der Benutzer Zeichen aus Eingaben entfernt, die mit Tastatur-, Schnitt- oder Ziehvorgängen gefüllt wurden." developer.mozilla.org/en-US/docs/Web/Events/…
tkane2000
Es gibt ein Problem mit diesem Code. Wenn für das Eingabeelement die maximale Länge festgelegt ist, wird das Ereignis 'Eingabe' ausgelöst, auch wenn die maximale Länge erreicht ist und der Wert nicht geändert wird
nivcaner
Aber warum nicht einfach zwei getrennte Funktionen? Auf diese Weise müssen Sie den Ereignistyp oder den Eigenschaftsnamen nicht überprüfen. Der Code könnte sich in einer dritten gemeinsam genutzten Funktion befinden.
ADTC
17
Bei Verwendung von jQuery sind die folgenden Effekte identisch:
Mit dem inputEreignis scheint jedoch nur das zweite Muster in den von mir getesteten Browsern zu funktionieren.
Sie würden also erwarten, dass dies funktioniert, aber es funktioniert NICHT (zumindest derzeit):
$(':text').input(function(){ doSomething();});
Wenn Sie die Ereignisdelegierung nutzen möchten (z. B. um das Ereignis #containervor dem input.textHinzufügen zum DOM einzurichten ), sollten Sie Folgendes beachten:
Wie claustrofob sagte, wird oninput für IE9 + unterstützt.
Allerdings : „Der oninput Ereignis ist Buggy in Internet Explorer 9. Es wird nicht ausgelöst , wenn Zeichen aus einem Textfeld über die Benutzeroberfläche gelöscht werden , nur dann , wenn Zeichen eingefügt werden. Obwohl das onpropertychange Ereignis in Internet unterstützt Explorer 9, aber ähnlich wie die Bei einem Eingabeereignis ist es auch fehlerhaft, es wird beim Löschen nicht ausgelöst.
Da Zeichen auf verschiedene Arten gelöscht werden können (Rücktaste und Löschen, STRG + X, Befehl Ausschneiden und Löschen im Kontextmenü), gibt es keine gute Lösung, um alle Änderungen zu erkennen. Wenn Zeichen mit dem Befehl Löschen des Kontextmenüs gelöscht werden, kann die Änderung in JavaScript in Internet Explorer 9 nicht erkannt werden. "
Ich habe gute Ergebnisse, die sowohl an die Eingabe als auch an die Eingabe gebunden sind (und die Tastenkombination, wenn Sie möchten, dass sie im IE ausgelöst wird, während Sie die Rücktaste gedrückt halten).
Seien Sie vorsichtig bei der Verwendung von INPUT. Dieses Ereignis wird in IE 11 auf Fokus und Unschärfe ausgelöst. Es wird jedoch bei Änderungen in anderen Browsern ausgelöst.
Ich denke, 'Eingabe' funktioniert hier einfach genauso wie 'Eingabe' im DOM Level O-Ereignismodell.
Übrigens:
Genau wie Seidenfeuer es kommentierte, googelte auch ich nach 'jQuery input event'. Daher wurde ich hierher geführt und war erstaunt zu erfahren, dass 'input' ein akzeptabler Parameter für den Befehl bind () von jquery ist . In jQuery in Action (S. 102, Ausgabe 2008) wird 'Eingabe' nicht als mögliches Ereignis erwähnt (gegenüber 20 anderen von 'Unschärfe' bis 'Entladen'). Es ist wahr, dass auf p. In 92 könnte das Gegenteil durch erneutes Lesen vermutet werden (dh durch einen Verweis auf verschiedene Zeichenfolgenkennungen zwischen Level 0- und Level 2-Modellen). Das ist ziemlich irreführend.
Sie werden jedoch nicht alle von jedem Browser unterstützt.
Mozilla gibt Folgendes zum Eingabeereignis an:
Das DOM-Eingabeereignis wird synchron ausgelöst, wenn der Wert eines oder -Elements geändert wird. Darüber hinaus wird es auf inhaltsbearbeitbaren Editoren ausgelöst, wenn der Inhalt geändert wird.
change
erst dann, wenn das Feld den Fokus verloren hat.input
feuert sofort.input
Element und das Anhängen von Ereignissen.Antworten:
Es ist kein richtiger Alias,
keyup
dakeyup
es ausgelöst wird, auch wenn die Taste nichts tut (zum Beispiel: Durch Drücken und anschließendes Loslassen der Steuertaste wird einkeyup
Ereignis ausgelöst ).Eine gute Möglichkeit, darüber nachzudenken, ist folgende: Es ist ein Ereignis, das ausgelöst wird, wenn sich die Eingabe ändert. Dies umfasst - ohne darauf beschränkt zu sein - das Drücken von Tasten, die die Eingabe ändern (so dass beispielsweise
Ctrl
das Ereignis nicht von sich aus ausgelöst wird, sondernCtrl-V
zum Einfügen von Text) und die Auswahl einer Option für die automatische Vervollständigung im Linux-Stil -Klicken Sie auf Einfügen, Ziehen und Ablegen und viele andere Dinge.Weitere Informationen finden Sie auf dieser Seite und in den Kommentaren zu dieser Antwort.
quelle
input
ist eigentlich mehr als nur ein Filterkeyup
, zum Beispiel wird es auch ausgelöst , wenn der Wert aus der Liste der zuvor verwendeten Werte ausgewählt wurde ... Es war etwas, das sehr schwer zu handhaben wäre, wenn es keininput
Ereignis gäbe .oninput
Wird auch ausgelöst, wenn der Text mit der Maus geändert wird (entweder per Drag & Drop oder über ein Rechtsklick-Menü oder einen mittleren Klick zum Einfügen).oninput
Ereignis ist sehr nützlich, um Änderungen an Eingabefeldern zu verfolgen.In IE-Version <9 wird es jedoch nicht unterstützt. Ältere IE-Versionen haben jedoch ein eigenes proprietäres Ereignis
onpropertychange
, das dasselbe tut wieoninput
.Sie können es also folgendermaßen verwenden:
Um eine vollständige Crossbrowser-Unterstützung zu haben.
Da die Eigenschaftsänderung beispielsweise für JEDE Eigenschaftsänderung ausgelöst werden kann, wird die deaktivierte Eigenschaft geändert, und Sie möchten Folgendes einschließen:
quelle
Bei Verwendung von jQuery sind die folgenden Effekte identisch:
Mit dem
input
Ereignis scheint jedoch nur das zweite Muster in den von mir getesteten Browsern zu funktionieren.Sie würden also erwarten, dass dies funktioniert, aber es funktioniert NICHT (zumindest derzeit):
Wenn Sie die Ereignisdelegierung nutzen möchten (z. B. um das Ereignis
#container
vor deminput.text
Hinzufügen zum DOM einzurichten ), sollten Sie Folgendes beachten:Leider funktioniert es derzeit NICHT!
Nur dieses Muster funktioniert:
BEARBEITET MIT MEHR AKTUELLEN INFORMATIONEN
Ich kann dieses Muster mit Sicherheit bestätigen:
JETZT FUNKTIONIERT auch in allen "Standard" -Browsern.
quelle
Wie claustrofob sagte, wird oninput für IE9 + unterstützt.
Allerdings : „Der oninput Ereignis ist Buggy in Internet Explorer 9. Es wird nicht ausgelöst , wenn Zeichen aus einem Textfeld über die Benutzeroberfläche gelöscht werden , nur dann , wenn Zeichen eingefügt werden. Obwohl das onpropertychange Ereignis in Internet unterstützt Explorer 9, aber ähnlich wie die Bei einem Eingabeereignis ist es auch fehlerhaft, es wird beim Löschen nicht ausgelöst.
Da Zeichen auf verschiedene Arten gelöscht werden können (Rücktaste und Löschen, STRG + X, Befehl Ausschneiden und Löschen im Kontextmenü), gibt es keine gute Lösung, um alle Änderungen zu erkennen. Wenn Zeichen mit dem Befehl Löschen des Kontextmenüs gelöscht werden, kann die Änderung in JavaScript in Internet Explorer 9 nicht erkannt werden. "
Ich habe gute Ergebnisse, die sowohl an die Eingabe als auch an die Eingabe gebunden sind (und die Tastenkombination, wenn Sie möchten, dass sie im IE ausgelöst wird, während Sie die Rücktaste gedrückt halten).
quelle
Seien Sie vorsichtig bei der Verwendung von INPUT. Dieses Ereignis wird in IE 11 auf Fokus und Unschärfe ausgelöst. Es wird jedoch bei Änderungen in anderen Browsern ausgelöst.
https://connect.microsoft.com/IE/feedback/details/810538/ie-11-fires-input-event-on-focus
quelle
Ich denke, 'Eingabe' funktioniert hier einfach genauso wie 'Eingabe' im DOM Level O-Ereignismodell.
Übrigens:
Genau wie Seidenfeuer es kommentierte, googelte auch ich nach 'jQuery input event'. Daher wurde ich hierher geführt und war erstaunt zu erfahren, dass 'input' ein akzeptabler Parameter für den Befehl bind () von jquery ist . In jQuery in Action (S. 102, Ausgabe 2008) wird 'Eingabe' nicht als mögliches Ereignis erwähnt (gegenüber 20 anderen von 'Unschärfe' bis 'Entladen'). Es ist wahr, dass auf p. In 92 könnte das Gegenteil durch erneutes Lesen vermutet werden (dh durch einen Verweis auf verschiedene Zeichenfolgenkennungen zwischen Level 0- und Level 2-Modellen). Das ist ziemlich irreführend.
quelle
jQuery hat die folgende Signatur für die
.on()
Methode:.on( events [, selector ] [, data ], handler )
Ereignisse können alle in dieser Referenz aufgeführten Ereignisse sein:
https://developer.mozilla.org/en-US/docs/Web/Events
Sie werden jedoch nicht alle von jedem Browser unterstützt.
Mozilla gibt Folgendes zum Eingabeereignis an:
quelle
Arbeiten sowohl in IE als auch in Chrome
quelle
bind
ist veraltet, verwenden Sieon