Използвам доджо DateTextBox
със свързан onChange
събитие.
Има случаи, когато потребителите избират същия ден като вече избрания, което за съжаление (но разбира се логично) не се запалва onChange
събитие. Но все пак трябва да задействам onChange
-свързани действия, независимо дали потребителят е избрал отново същата стойност или не.
Има ли начин да свържете събитията към единични / всички DateTextBox
дни заобикаляйки onChange
събитие на кутията? Мисля, че дните сами по себе си не са джаджи. Още по-добър вариант би бил някакъв вид onSelect
събитие за DateTextBox
, което очевидно не съществува ...
Отговори:
2 за отговор № 1Трябва да се свържете с onChange
събитие в изскачащия календар, не DateTextBox
, Проблемът е, че всеки път, когато отваряте календара DateTextBox
унищожава показания преди това екземпляр и създава нов екземпляр от dijit.Calendar
(посочен в DateTextBox.dropDown
Имот).
Така че трябва да се свържете с DateTextBox.openDropDown()
метод за създаване на връзка с DateTextBox.dropDown.onChange()
, т.е. 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);
});
Вижте този пример в действие на jsFiddle.