/ / Esiste un modo per abilitare eventi relativi al giorno in DateTextBox di dojo? - javascript, eventi, dojo

C'è un modo per abilitare eventi relativi al giorno in DateTextBox del dojo? - javascript, eventi, dojo

Sto usando i dojo DateTextBox con un collegato onChange evento.

Ci sono casi in cui gli utenti selezionano lo stesso giorno di quelli già selezionati, che sfortunatamente (ma ovviamente logicamente) non sparano onChange evento. Ma ho ancora bisogno di innescare il onChangeazioni collegate indipendentemente dal fatto che l'utente abbia nuovamente selezionato lo stesso valore o meno.

Esiste un modo per connettere gli eventi a single / all DateTextBox giorni bypassando il onChange evento della scatola? Penso che i giorni non siano gli stessi widget. Un'opzione ancora migliore sarebbe una specie di onSelect evento per DateTextBox, che apparentemente non esiste ...

risposte:

2 per risposta № 1

Devi connetterti a onChange evento sul calendario popup, no DateTextBox. Il problema è che ogni volta che apri il calendario DateTextBox distrugge l'istanza mostrata in precedenza e crea una nuova istanza di dijit.Calendar (indicato in DateTextBox.dropDown proprietà).

Quindi è necessario connettersi a DateTextBox.openDropDown() metodo per creare la connessione DateTextBox.dropDown.onChange(), cioè 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);
});

Vedi questo esempio in azione su jsFiddle.