我被一个工作中的项目困住了。我需要更改某些日子的背景颜色。这是一个用户应该看到的日历,哪些日子可用,哪些不可用。我发现有一个名为“data-date”的属性,但我没有找到使用它的可能性。
有没有办法操纵特定日子的背景?
我认为必须有一种方法,因为显示当前日期的单元格也有另一种颜色。
我被一个工作中的项目困住了。我需要更改某些日子的背景颜色。这是一个用户应该看到的日历,哪些日子可用,哪些不可用。我发现有一个名为“data-date”的属性,但我没有找到使用它的可能性。
有没有办法操纵特定日子的背景?
我认为必须有一种方法,因为显示当前日期的单元格也有另一种颜色。
对于视图month
,您可以通过提供函数basicWeek
来更改天数的呈现。例如:basicDay
dayRender
$("#calendar").fullCalendar({
dayRender: function (date, cell) {
cell.css("background-color", "red");
}
});
文档dayRender
可在此处获得: http: //arshaw.com/fullcalendar/docs/display/dayRender/
这是关于 jsfiddle 的一个工作示例:http: //jsfiddle.net/kvakulo/CYnJY/4/
对于那些希望简单地更改过去日期的颜色的人,.fc-past
请在您的 css 中定位并添加一个background-color
属性。例如,:
.fc-past {
background-color: silver;
}
dayRender: function(date, cell){
if (moment().diff(date,'days') > 0){
cell.css("background-color","silver");
}
},
如果有人想查询以前一整天红色(或任何其他)颜色的完整日历,那么这就是代码。
var $calendar = $('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,basicWeek,basicDay'
},
defaultView: 'month',
dayRender: function (date, cell) {
var check = $.fullCalendar.formatDate(date,'yyyy-MM-dd');
var today = $.fullCalendar.formatDate(new Date(),'yyyy-MM-dd');
if (check < today) {
cell.css("background-color", "red");
}
}
});
Regin Larsen 代码帮助我实现了这一点。谢谢雷金·拉森。
为什么不使用“数据日期”属性?
$("#calendar").fullCalendar(function() {
viewRender: function() {
$("[data-date="+$.fullCalendar.formatDate(new Date(), "yyyy-MM-dd")+"]").css("background-color", "red");
},
....
使用外部库时,您应该尽量不要利用库生成的任何内容。因为在下一个版本中,如果他们更改了库内部的工作方式,该库仍将向后兼容,但您的代码将停止工作。所以尽量使用库 API 而不是做 hack。
回答您的问题,一种方法是在所有不可用的日子里添加一个新事件。这可以通过创建事件对象并执行 renderEvent(.fullCalendar('renderEvent', event [, stick ])) 来完成。在创建事件对象时,将背景颜色指定为您想要的颜色,并将颜色、文本颜色、边框颜色设置为与背景相同(如果您不希望它可见)。
编辑:Regin Larsen 的回答似乎更好。我没有在文档中注意到这一点。
要使用特定日期的日期参数进行比较:
$("#calendar").fullCalendar({
dayRender: function (date, cell) {
if (date.isSame('2016-08-04')) {
cell.css("background-color","red");
}
}
});
isSame 来自 moment.js,fullcalendar 使用它:http: //momentjs.com/docs/#/query/is-same/
我猜 getDate 不起作用,请改用 moment。
里面var calendar = $('#calendar').fullCalendar({ ... }
dayRender: function (date, cell) {
var today = moment('2018-06-22T00:00Z');
if (date.isSame(today, "day")) {
cell.css("background-color", "blue");
}
},