2017-08-15 128 views
0

我正在使用fullcalendar进行日常活动预订。我想根据给定的日期进行一些日期的颜色更改。但它在整个日历中呈现颜色。它使所有单元格的绿色。 下面是代码,dayRender在给定日期不能在fullcalendar上正常工作

dayRender: function (date, cell) { 
    var disabledDates = ["2017-08-17","2017-08-23"]; 
    if ($.inArray(date.format("YYYY-MM-DD"),disabledDates)) { 
     //alert("success"); 
     cell.css("background-color", "green"); 
    } 
} 

回答

0

您没有使用正确$.inArray。它不会返回truefalse,您将用它来解析if语句。相反,它会返回一个整数,表示它首先找到匹配值的索引。如果找不到匹配项,则返回-1。

你的问题发生,因为JavaScript把0作为松散等于false(即0 == false,但0 !== false),和所有其他号码作为松散等于true。因此,如果$.inArray返回除0以外的任何内容(即返回的值与第一个数组索引中的值相匹配时为0),则您的if语句将视为返回true,并因此更改背景颜色。这就是为什么它会为2017-08-17之外的所有人改变它。

该版本将正常运行,测试该指数回报为> -1设置背景颜色之前(整数,而不是一个布尔值):

dayRender: function(date, cell) { 
    var disabledDates = ["2017-08-17", "2017-08-23"]; 
    if ($.inArray(date.format("YYYY-MM-DD"), disabledDates) > -1) { 
    console.log(date.format("YYYY-MM-DD")); 
    cell.css("background-color", "green"); 
    } 
} 

进行更详细的说明,请参见https://api.jquery.com/jQuery.inArray/

+1

非常感谢您的解释。它的工作! – Jason

+0

没问题,乐意帮忙。阅读文档总是值得的! :-) – ADyson

相关问题