2011-12-15 29 views
0

我正在使用dojo的DateTextBox與已連接的onChange事件。有沒有辦法在dojo的DateTextBox中啓用與日期相關的事件?

有些情況下用戶選擇當天選擇的情況,不幸的是(但當然是邏輯上)不會觸發onChange事件。但我仍然需要觸發onChange關聯的操作,而不管用戶是再次選擇了相同的值還是沒有選擇相同的值。

有什麼方法來連接事件,單曲/全部DateTextBox繞過onChange事件盒子?我認爲這些日子本身不是小部件。一個更好的選擇將是某種onSelect事件爲DateTextBox,這顯然不存在...

回答

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見行動這個例子。

相關問題