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 onChange
azioni 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 № 1Devi 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.