/ / Gibt es eine Möglichkeit, tagesbezogene Ereignisse in der DateTextBox von dojo zu aktivieren? - Javascript, Ereignisse, Dojo

Gibt es eine Möglichkeit, tagesbezogene Ereignisse in der DateTextBox von Dojo zu aktivieren? - Javascript, Ereignisse, Dojo

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 № 1

Sie 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.