Ich habe mir zahlreiche andere Fragen angesehen und sehr einfache Antworten gefunden, einschließlich des folgenden Codes. Ich möchte nur erkennen, wenn jemand den Inhalt eines Textfelds ändert, aber aus irgendeinem Grund funktioniert es nicht ... Ich erhalte keine Konsolenfehler. Wenn ich bei der change()
Funktion einen Haltepunkt im Browser setze, wird dieser nie erreicht.
$('#inputDatabaseName').change(function () {
alert('test');
});
<input id="inputDatabaseName">
Antworten:
Sie können das
input
Javascript-Ereignis in jQuery folgendermaßen verwenden:In reinem JavaScript:
Oder so:
quelle
Versuchen Sie Keyup statt Änderung.
Hier ist die offizielle jQuery-Dokumentation für .keyup () .
quelle
In jeder Antwort fehlen einige Punkte. Hier ist meine Lösung:
Die in Chrome und Firefox getesteten Auslöser
Input Event
für Tastatureingabe , Ziehen mit der Maus , automatisches Ausfüllen und Kopieren und Einfügen wurden getestet. Wenn Sie nach dem vorherigen Wert suchen, werden echte Änderungen erkannt. Dies bedeutet, dass beim Einfügen des gleichen Objekts oder beim Eingeben des gleichen Zeichens usw. nicht ausgelöst wird.Arbeitsbeispiel: http://jsfiddle.net/g6pcp/473/
aktualisieren:
Wenn Sie Ihre Funktion
change function
nur ausführen möchten , wenn der Benutzer die Eingabe beendet hat, und verhindern möchten, dass die Änderungsaktion mehrmals ausgelöst wird, können Sie Folgendes versuchen:Wenn der Benutzer mit der Eingabe beginnt (z. B. "foobar"), verhindert dieser Code, dass Sie
change action
für jeden Buchstaben ausgeführt werden, den der Benutzer eingibt, und wird nur ausgeführt, wenn der Benutzer die Eingabe beendet. Dies gilt insbesondere dann, wenn Sie die Eingabe an den Server senden (z. B. Sucheingaben) Wege - Server hat nur eine Suche nachfoobar
und nicht sechs suchtf
und dannfo
und dannfoo
undfoob
und so weiter.quelle
$("#input").focusout(function () {})
. Wenn Sie außerhalb Ihrer Eingabe klicken, wird das Ereignis ausgelöst. Funktioniert mit der aktuellen Version von Chrome und Firefox sowie IE9$("#input").on("input focusout",function(e){
Texteingaben lösen das
change
Ereignis erst aus, wenn sie den Fokus verlieren. Klicken Sie außerhalb der Eingabe und die Warnung wird angezeigt.Wenn der Rückruf ausgelöst werden soll, bevor die Texteingabe den Fokus verliert, verwenden Sie das
.keyup()
Ereignis.quelle
change
arbeitet hier: jsfiddle.net/g6pcp ;keyup
Alarm nach jedem Schlüssel, was kein guter Weg istalert()
. Es wird das Debuggen so viel einfacher machen.onkeyup, onpaste, onchange, oninput
scheint fehlzuschlagen, wenn der Browser das automatische Ausfüllen der Textfelder durchführt. Um einen solchen Fall zu behandeln,autocomplete='off'
fügen Sie " " in Ihr Textfeld ein, um zu verhindern, dass der Browser das Textfeld automatisch ausfüllt.Z.B,
quelle
In meinem Fall hatte ich ein Textfeld, das an einen Datepicker angehängt war. Die einzige Lösung, die für mich funktioniert hat, war, sie innerhalb des onSelect-Ereignisses des Datepickers zu behandeln.
quelle
Ich denke, Sie können auch verwenden
keydown
:quelle
ARBEITEN:
quelle