我正在将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/

10-12 12:45