我正在将dojo的DateTextBox
与连接的onChange
事件一起使用。
在某些情况下,用户选择的日期与选择的日期相同,但不幸的是(当然,在逻辑上)不会触发onChange
事件。但是无论用户是否再次选择相同的值,我仍然需要触发连接onChange
的操作。
有什么方法可以绕过包装盒的DateTextBox
事件将事件连接到整天onChange
?我认为日子不是小部件本身。更好的选择是onSelect
的某种DateTextBox
事件,该事件显然不存在...
最佳答案
您需要连接到弹出日历上的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上的操作示例。
关于javascript - 有什么方法可以在dojo的DateTextBox中启用与天相关的事件吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8522978/