Ich habe einen JS-Code, in dem beim Ändern eines Felds eine Suchroutine aufgerufen wird. Das Problem ist, dass ich keine jQuery-Ereignisse finden kann, die ausgelöst werden, wenn der Datepicker das Eingabefeld aktualisiert.
Aus irgendeinem Grund wird ein Änderungsereignis nicht aufgerufen, wenn Datepicker das Feld aktualisiert. Wenn der Kalender erscheint, ändert sich der Fokus, sodass ich ihn auch nicht verwenden kann. Irgendwelche Ideen?
jquery
datepicker
Zbestzeus
quelle
quelle
Antworten:
Sie können das
onSelect
Ereignis des Datepickers verwenden .Live-Beispiel :
Code-Snippet anzeigen
onSelect
Wird leider ausgelöst, wenn ein Datum ausgewählt wird, auch wenn es sich nicht geändert hat. Dies ist ein Konstruktionsfehler im Datepicker: Er wird immer ausgelöstonSelect
(auch wenn sich nichts geändert hat) und löst bei Änderungen kein Ereignis für die zugrunde liegende Eingabe aus. (Wenn Sie sich den Code dieses Beispiels ansehenchange
, warten wir auf Änderungen, aber sie werden nicht ausgelöst.) Es sollte wahrscheinlich ein Ereignis auf der Eingabe auslösen, wenn sich die Dinge ändern (möglicherweise das übliche Ereignis oder möglicherweise ein Datumspicker-). spezifisch).Wenn Sie möchten, können Sie das
change
Ereignis natürlich ininput
Brand setzen:Das wird
change
auf den Basiswert feuerninput
für jeden Handler, der über jQuery angeschlossen ist, ausgelöst. Aber es wird immer wieder ausgelöst. Wenn Sie nur eine echte Änderung auslösen möchten, müssen Sie den vorherigen Wert (möglicherweise überdata
) speichern und vergleichen.Live-Beispiel :
Code-Snippet anzeigen
quelle
change
Handler auslösen ", und deshalb habe ich die Antwort damit aktualisiert. :-)Die Antwort von TJ Crowder ( https://stackoverflow.com/a/6471992/481154 ) ist sehr gut und bleibt weiterhin korrekt. Das Auslösen des Änderungsereignisses innerhalb der onSelect-Funktion ist so nah wie möglich.
Es gibt jedoch eine nette Eigenschaft für das Datepicker-Objekt (
lastVal
), mit der Sie das Änderungsereignis nur bei tatsächlichen Änderungen bedingt auslösen können, ohne die Werte selbst speichern zu müssen:Behandeln Sie dann Änderungsereignisse wie gewohnt:
quelle
lastVal
jedoch ;-)lastVal
existiert zumindest in meinen Tests nicht für das Datepicker-Objekt. Diese Lösung löst also immer die Änderung aus.Sie suchen nach dem Ereignis onSelect im Datepicker-Objekt:
quelle
Ich habe dies geschrieben, weil ich eine Lösung brauchte, um ein Ereignis nur dann auszulösen, wenn sich das Datum änderte.
Es ist eine einfache Lösung. Jedes Mal, wenn das Dialogfeld geschlossen wird, testen wir, ob sich die Daten geändert haben. Wenn dies der Fall ist, lösen wir ein benutzerdefiniertes Ereignis aus und setzen den gespeicherten Wert zurück.
Jetzt können wir Handler für dieses benutzerdefinierte Ereignis anschließen ...
quelle
quelle
Ich verwende Bootstrap-Datepicker und keine der oben genannten Lösungen hat bei mir funktioniert. Diese Antwort hat mir geholfen ..
Das Ereignis zum Ändern des Datums des Bootstrap-Datumsauswahlprogramms wird nicht ausgelöst, wenn Datumsangaben manuell bearbeitet oder das Datum gelöscht werden
Folgendes habe ich angewendet:
Hoffe das kann anderen helfen.
quelle
Unter jQueryUi 1.9 habe ich es geschafft, einen zusätzlichen Datenwert und eine Kombination aus beforeShow- und onSelect-Funktionen zum Laufen zu bringen:
Funktioniert bei mir :)
quelle
Ich weiß, das ist eine alte Frage. Aber ich konnte das Ereignis jquery $ (this) .change () nicht dazu bringen, onSelect korrekt auszulösen. Also habe ich den folgenden Ansatz gewählt, um das Änderungsereignis über Vanilla Js auszulösen.
quelle
Versuche dies
Hoffe das hilft:)
quelle
Versuchen :
quelle
Handbuch sagt:
So:
Funktioniert bei mir.
quelle
Meine Lösung:
quelle
Meine Lösung ist:
quelle
Der von DatePicker ausgewählte Wert ändert den Ereigniscode unten
quelle
Wenn Sie wdcalendar verwenden, wird dies Ihnen helfen
Die Veranstaltung onReturn funktioniert für mich
Ich hoffe das hilft
quelle
Ich denke, Ihr Problem könnte darin liegen, wie Ihr Datepicker eingerichtet ist. Warum trennen Sie nicht den Eingang ... verwenden Sie nicht altField. Legen Sie stattdessen die Werte explizit fest, wenn onSelect ausgelöst wird. Auf diese Weise können Sie jede Interaktion steuern. das Benutzertextfeld und die Datumsauswahl.
Hinweis: Manchmal müssen Sie die Routine für .change () und nicht für .onSelect () aufrufen, da onSelect für verschiedene Interaktionen aufgerufen werden kann, die Sie nicht erwarten.
Pseudocode:
quelle