我正在使用带有连接DateTextBox
事件的道场onChange
。
有些情况下用户选择已选择的同一天,不幸的是(但当然逻辑上)不会触发onChange
事件。但我仍然需要触发onChange
- 连接的操作,无论用户是否再次选择相同的值。
有没有办法将事件连接到单个/所有DateTextBox
天,绕过该框的onChange
事件?我认为这些日子本身并不是小部件。一个更好的选择是onSelect
的某种DateTextBox
事件,显然不存在......
答案 0 :(得分:2)
您需要在弹出日历上连接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中的此示例。