Выделение выбранной даты в FullCalendar

Я пытаюсь сделать выбранный день в FullCalender.io выделен (аналогично тому, как текущий день).

после FullCalendar-выделите конкретный день в week view Я пробовал следующее, которое в основном повторно отображает календарь одним щелчком мыши и выделяет ячейку, дата которой соответствует дате щелчка.

    dayRender: function(date, cell)
    {
        var moment = $('#calendar').fullCalendar('getDate');

        if (moment.get('date') == date.get('date'))
        {
            $(cell).addClass('fc-state-highlight');
        }
        else
        {
            $(cell).removeClass('fc-state-highlight');
        }
    },
    dayClick: function (date, allDay, jsEvent, view) {
        $('#calendar').fullCalendar('render');
    },

но он ничего не делает. :-(

4 ответов


вы можете использовать этот кусок кода в v1.x

$('#calendar').fullCalendar({
   dayClick: function (date, allDay, jsEvent, view) {
        $(".fc-state-highlight").removeClass("fc-state-highlight");
        $(jsEvent.target).addClass("fc-state-highlight");
   }
});

v2.X

$('#calendar').fullCalendar({
   dayClick: function (date, jsEvent, view) {
        $(".fc-state-highlight").removeClass("fc-state-highlight");
        $(jsEvent.target).addClass("fc-state-highlight");
   }
});

в CSS .fc-state-highlight {background:red;}

Примечание: это может быть достигнуто другими способами, также используя data-date атрибут ячейки и


основываясь на другом ответе, это сделает то, что вам нужно:

dayClick: function (date, jsEvent, view) {
    $('.fc-day').each(function () {
        $(this).removeClass("fc-state-highlight");
    });

    $("td[data-date=" + date.format() + "]").addClass("fc-state-highlight");
},

v2.X

$('#calendar').fullCalendar({
  dayClick: function (date, jsEvent, view) {
    $(".fc-state-highlight").removeClass("fc-state-highlight");
    $(this).addClass("fc-state-highlight");
  }
});

в CSS .fc-state-highlight {background:red;}


один быстрый способ-это использовать selectable:

var calendar = $('#calendar'); 

calendar.fullCalendar({
  selectable: true
})

даже такой вариант Allows a user to highlight multiple days or timeslots by clicking and dragging (источник:https://fullcalendar.io/docs/selection/selectable/), он имеет побочный эффект выделения выбранного дня, если вы нажмете только на один день.