javascript - Dojo Dijit 日历小部件使用 DisabledDate 禁用除少数几个日期之外的所有日期

标签 javascript date calendar dojo

我无法理解如何使用 isDisabledDate 属性来禁用除少数日期之外的所有日期。

情况:

我使用 Dijit 日历小部件作为 Web 应用程序的一部分,该应用程序允许控制远程调度程序。

基本上,当用户请求时,会从服务器检索作业列表。如果有一个作业安排在特定的特定日期,则应启用该日期(否则默认禁用)。

直观上,在伪代码中,我想做这样的事情:

function onGetJobsComplete(jobs){ 
    foreach(job in jobs) {
         dijit.byId('MyCalender').enableDate(job.date);
    }
}

最终结果是,我希望用户能够以图形方式查看哪些天有工作,并且能够单击这些天来获取其他信息(这部分我正在工作)。

我能找到的所有示例似乎都是根据不依赖于外部、不断变化的数据的标准来处理日期(即:所有周末或某些此类)

编辑:

我已经尝试过:

     <div id="calSJobs" data-dojo-type="dijit/Calendar" data-dojo-props="
                dayWidth:'abbr',
                isDisabledDate: disabledDates"
                />

-

function disabledDates(value){
    if(typeof dataJobs == 'undefined')
        return true;
    try {   
    for(i=0; i<dataJobs.length; i++) {
        if(dataJobs[i].cron == 'False')
        {
                jobDate = new Date(dataJobs[i].time);
                calDate = value;
                if(compareDate(jobDate, calDate)
                    return false;
        }
    }
    } catch (err) {log(err.message);}
    return true;
}

var compareDate;
require(["dojo/date"], function(date){

compareDate = function (date1, date2) {
    if(date.compare(date1, date2, 'date') == 0)
        return true;
    else
        return false;
}

});

但这有两个问题:

  • compareDate 不起作用,因为我需要 AMD 模块如果我删除“require”内容,它可以正常工作,但我无法使用 date.compare。同样的事情在我的代码中的其他地方有效,但当它被 dijit 小部件调用时却不起作用?

  • 除了日历 View 更改之外,如何在数据更改时运行逻辑?

最佳答案

如果您按如下方式创建日历,则可以添加启用和禁用日期的逻辑

 new Calendar({
        value: new Date(),
        isDisabledDate: lang.hitch(this, function(d){
            return true;
        })
    }, "mycal"); 

这应该禁用所有日期。或者,如果您想启用其中一些功能,您可以向函数添加一些逻辑,并在该日期在您的列表中时返回 false。

顺便说一句,如果您想禁用所有内联日期,您可以执行以下操作:

<div data-dojo-type="dijit.Calendar" value="20120512" data-dojo-props="isDisabledDate:function(){return true; }"></div>

关于javascript - Dojo Dijit 日历小部件使用 DisabledDate 禁用除少数几个日期之外的所有日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847094/

相关文章:

javascript - 如何找到字符串中最长的匹配字母序列?

java - Calendar.getTime() 失败,出现 java.lang.IllegalArgumentException :MINUTE for Asia/Singapore timezone

r - 从 POSIXct 对象中减去一年

python - 更改日历的 django 管理模板

javascript - 我的 React 应用程序没有显示我创建的组件,我找出了原因

跨浏览器实例/页面刷新对本地文件的 Javascript 持久访问

java日期解析错误行为

jQuery 日期选择器 Mindate、MaxDate

java - WEEK_OF_YEAR 在不同机器上不一致

javascript - (Wordpress/AJAX) : Update attachment title, 来自前端的描述和替代