我正在使用完整日历进行日间活动预订。我想根据给定的日期进行某一天的颜色更改。但它在整个日历中呈现颜色。它使所有单元格变绿。 这是代码,
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");
}
}
您没有正确使用$.inArray
。它不返回true
或false
,您将使用这些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/。