我有一个平面日历,可以突出节日和事件
当日历更改月份时,它将获取日历呈现的统计信息(选定月份)。
MyCalendar2._setCurrentFocusAttrOld = MyCalendar2._setCurrentFocusAttr;
MyCalendar2._setCurrentFocusAttr = function(d) {
//Loading the new month monthStat via the UI / KB / SelectBox
var cbFunc = function(){ MyCalendar2._setCurrentFocusAttrOld(d); };
getMonthlyStat( dateStr(d), cbFunc);
}
我的问题在于:如何在DateTextBox中实现此功能?
目标:DateTextBox可以突出显示假日,在更改月份时自动获取假日。
这是jsfiddle。
答案 0 :(得分:1)
dijit/form/DateTextBox
允许您指定要用于其弹出日历的自定义类。因此,如果您要更改代码以实际创建dijit/Calendar
的扩展名,则可以将其传递给popupClass
实例上的DateTextBox
。
以下是您可以将一些代码重新排列到扩展程序中的方法:
var CustomCalendar = declare(Calendar, {
getClassForDate: function(d) {
//mark the cell in different color to present tight
var ds = dateStr(d);
if( !isEmptyStr(calData[ds]) )
return 'mystyle_' + calData[ds];
},
_setCurrentFocusAttr: function(d) {
var self = this,
args = arguments;
getMonthlyStat(dateStr(d), function(){
self.inherited(args);
});
}
});
然后实例化使用它的DateTextBox
:
var textbox = new DateTextBox({
popupClass: CustomCalendar,
constraints: constraints
}, "textbox");
更新了小提琴:http://jsfiddle.net/W4ze7/2/
您还可以考虑将您的实用程序功能移动到扩展中,遵循为其名称添加下划线的前缀,以表明它们是供内部使用的。