Ich benutze Dojos DateTextBox
mit einem verbundenen onChange
Veranstaltung.
Es gibt Fälle, in denen Benutzer denselben Tag wie bereits ausgewählt auswählen, was leider (aber natürlich logischerweise) nicht funktioniert onChange
Veranstaltung. Aber ich muss noch das auslösen onChange
-verbundene Aktionen, unabhängig davon, ob der Benutzer denselben Wert erneut ausgewählt hat oder nicht.
Gibt es eine Möglichkeit, Ereignisse mit single / all zu verbinden? DateTextBox
Tage Umgehen der onChange
Ereignis der Box? Ich denke, die Tage sind keine Widgets für sich. Eine noch bessere Option wäre eine Art onSelect
Ereignis für DateTextBox
, was anscheinend nicht existiert ...
Antworten:
2 für die Antwort № 1Sie müssen eine Verbindung zu herstellen onChange
Ereignis im Popup-Kalender, nicht DateTextBox
. Das Problem ist, dass jedes Mal, wenn Sie den Kalender öffnen DateTextBox
zerstört die zuvor angezeigte Instanz und erstellt eine neue Instanz von dijit.Calendar
(verwiesen in DateTextBox.dropDown
Eigentum).
Sie müssen also eine Verbindung herstellen DateTextBox.openDropDown()
Methode, um eine Verbindung zu erstellen DateTextBox.dropDown.onChange()
, d.h. Calendar.onChange()
:
var dateBox = dijit.byId("dateBox");
var eventHandle;
dojo.connect(dateBox, "onChange", function(value) {
// fires only if clicked date changed
console.log("onChange");
});
dojo.connect(dateBox, "openDropDown", function() {
eventHandle = dojo.connect(dateBox.dropDown, "onChange", function(value) {
// fires every time date is clicked
console.log(value.toString());
});
});
dojo.connect(dateBox, "closeDropDown", function() {
dojo.disconnect(eventHandle);
});
Sehen Sie dieses Beispiel in Aktion unter jsFiddle.