В полном календаре подсветка пользовательских дат
Я хочу показать в календаре, что какие даты бесплатные даты в году. Для них я хочу установить красный фон.
Моя проблема в том, что с этим кодом, он дает красный фон для всех дат.
Я использую это в событии dayRender.
var unnep_napok =
[
"2019-01-12",
"2019-01-15"
];
$('#calendar').fullCalendar({
events: valami,
lang: 'hu',
dayClick: function(event) {
$(cell).removeClass('ui-widget-content');
$(cell).addClass('holiday');
$(this).css('background-color', 'green');
},
defaultView: 'month',
contentHeight: 'auto',
slotEventOverlap: false,
eventRender: function(eventObj, $el) {
$el.popover({
title: ' ',
content: eventObj.description,
trigger: 'hover',
placement: 'top',
container: 'body'
});
},
dayRender: function (date, cell) {
for(i = 0; i < unnep_napok.length; i++ )
{
cell.css("background-color", "red");
}
}
});
Обновление со сравнением:
dayRender: function (date, cell) {
for(i = 0; i < unnep_napok.length; i++ )
{
if(date == unnep_napok[i] )
{
cell.css("background-color", "red");
}
}
}
Обновление 2, форматирование элементов массива:
dayRender: function (date, cell)
{ for(i = 0; i < unnep_napok.length; i++ ) { var datum = unnep_napok[i].moment.format('yyyy-mm-dd'); if(date.getDate() == datum ) { cell.css("background-color", "red"); } } }
2 ответа
После вашего обновления все еще есть некоторые проблемы, которые можно решить, прочитав документацию (и мои предыдущие комментарии) более внимательно:
1) Я не дал вам буквальных значений для использования в команде "format". Вы полностью прочитали документацию? Как видите, правильный формат будет YYYY-MM-DD
(большие буквы, а не маленькие буквы).
2) unnep_napok[i].moment.format
... это не то, как вы создаете объект momentJS. Я ожидаю, что ваш браузер выдал ошибку в консоли по этому поводу.
3) Но в любом случае 2) на самом деле это не важно, потому что, как я уже упоминал в своем последнем комментарии, это date
значение, которое вам нужно отформатировать... ваши значения unsp_napok уже являются строками!!
4) date.getDate()
.. Я не знаю, откуда ты это взял?? MomentJS не документирует такую функцию.
Это должно работать для вас:
dayRender: function (date, cell)
{
for(i = 0; i < unnep_napok.length; i++ )
{
if(date.format('YYYY-MM-DD') == unnep_napok[i])
{
cell.css("background-color", "red");
}
}
}
Пример работы на основе ответа ADyson. Я также рассмотрел пример popover для быстрого старта.
.popover работает таким образом $(element).popover и не работает с использованием element.popover
Пример выполнения: https://jsfiddle.net/alifaraze/mr53d7nz/8/
HTML
<div id="calendar"></div>
скрипт
$(document).ready(function() {
var unnep_napok = [
"2019-01-23",
"2019-01-25"
];
$('#calendar').fullCalendar({
events: [{
id: 1,
title: 'Full Day Event',
start: '2019-01-02',
end: '2019-01-03',
description: 'A full day event description'
},
{
id: 2,
title: 'Whole Week Event',
start: '2019-01-06',
end: '2019-01-10',
description: 'Whole week event description'
}
// more events here
],
eventRender: function(event, element) {
$(element).popover({
title: function() {
return "<B>" + event.title + "</B>";
},
placement: 'auto',
html: true,
trigger: 'click',
animation: 'false',
content: function() {
return "<h4>"+ event.description+"</h4>"
},
container: 'body'
});
},
dayRender: function(date, cell) {
for (i = 0; i < unnep_napok.length; i++) {
if (date.format('YYYY-MM-DD') == unnep_napok[i]) {
cell.css("background-color", "red");
}
}
}
});
})