有没有办法在dojo的DateTextBox中启用与日相关的事件?

时间:2011-12-15 16:04:19

标签: javascript events dojo

我正在使用带有连接DateTextBox事件的道场onChange

有些情况下用户选择已选择的同一天,不幸的是(但当然逻辑上)不会触发onChange事件。但我仍然需要触发onChange - 连接的操作,无论用户是否再次选择相同的值。

有没有办法将事件连接到单个/所有DateTextBox ,绕过该框的onChange事件?我认为这些日子本身并不是小部件。一个更好的选择是onSelect的某种DateTextBox事件,显然不存在......

1 个答案:

答案 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中的此示例。