Есть ли способ включить события, связанные с днем, в DateTextBox dojo? - PullRequest
0 голосов
/ 15 декабря 2011

Я использую Dojo's DateTextBox с подключенным событием onChange.

В некоторых случаях пользователи выбирают тот же день, что и выбранный ранее, что, к сожалению (но, конечно, логично), не запускаетonChange событие.Но мне по-прежнему нужно запускать действия onChange, связанные с подключением, независимо от того, выбрал ли пользователь то же значение снова или нет.

Есть ли способ связать события с одним / всеми DateTextBox дней в обход события onChange коробки?Я думаю, что дни не сами виджеты.Еще лучшим вариантом было бы какое-то событие onSelect для DateTextBox, которого, очевидно, не существует ...

1 Ответ

2 голосов
/ 15 декабря 2011

Вам нужно подключиться к событию 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...