Esto se basa en una pregunta anterior aquí que parece no tener respuesta: ¿FullCalendar selecciona todas las fechas en la matriz/lista?
Usaré nodejs para obtener datos para fechas específicas, y necesito seleccionar esas fechas en FullCalendar en una matriz. Desafortunadamente, las fechas en la matriz no se resaltan y no estoy seguro de por qué.
$(document).ready(function() { $('#calendar').fullCalendar({}); var dates = ["2021-10-20", "2021-10-21"]; $('.fc-day').each(function () { var thisdate = $(this).attr('data-date'); var td = $(this).closest('td'); if ($.inArray($(this).attr('data-date'), dates) !== -1) { td.addClass('fc-state-highlight'); } else { td.removeClass('fc-state-highlight'); } }); });El problema es con esto:
$('.fc-day').each(function () { var thisdate = $(this).attr('data-date'); var td = $(this).closest('td'); if ($.inArray($(this).attr('data-date'), dates) !== -1) { td.addClass('fc-state-highlight'); } else { td.removeClass('fc-state-highlight'); } });Está recorriendo solo los días del mes mostrados en el primer renderizado y después de eso no sucede nada cuando cambia el mes. Prueba esto:
$(document).ready(function() { var dates = ["2021-10-20", "2021-10-21"]; $('#calendar').fullCalendar({ dayRender: function(date, cell) { var dateObj = new Date(date._d); var month = dateObj.getUTCMonth() + 1; //months from 1-12 var day = dateObj.getUTCDate(); var year = dateObj.getUTCFullYear(); newdate = year + "-" + month + "-" + day; if (dates.includes(newdate)) { cell.addClass('fc-state-highlight'); } } }); });Función de procesamiento del documento del día: https://fullcalendar.io/docs/v4/dayRender
Cada vez que cambia el mes, se llama a la función dayRender y para cada día del mes verifica si está incluido en su matriz de días.