您需要連接到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見行動這個例子。