Как отключить только даты из предыдущего месяца - PullRequest
1 голос
/ 25 марта 2020

У меня есть простой раздел, в котором я показываю календарь для своих пользователей, используя полный API-интерфейс календаря. Я хочу отключить только даты за предыдущий месяц.

JSFIDDLE demo

Ожидаемый результат

enter image description here

Вот что я пробовал до сих пор, используя полную календарную документацию HTML

<div id="calendar"></div>

JS

$('#calendar').fullCalendar({
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay'
    },
             selectable: true,
                  selectAllow: function(selectInfo) {
                      console.log(selectInfo);
                    return moment().diff(selectInfo.start) <= 0
                  },  
    // set source and define start and end params
    events: [
        {
            id: "1",
            title: "First event",
            start: "20120-03-26 13:00:00",
            end: "2020-03-26 15:00:00",
            className: 'available'
        },
        {
            id: "2",
            title: "Second event",
            start: "2020-03-29 18:00:00",
            end: "2020-03-29 20:00:00",

        }
    ],

});

ПРИМЕЧАНИЕ: я использую полный календарь v4

К сожалению, мое решение отключает все прошлые даты, но я просто хочу только даты из прошлого месяц должен быть отключен

Что мне нужно сделать, чтобы добиться того, чего я хочу?

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

Вы можете легко использовать момент JS, чтобы найти начало текущего месяца и сравнить вместо этого выбранную дату.

selectAllow: function(selectInfo) {
  var ms = moment().startOf("month");
  return ms.isSameOrBefore(selectInfo.start);
}

Демо: https://codepen.io/ADyson82/pen/yLNRWwZ

Подробнее см. https://momentjs.com/docs/# / манипулирование / запуск / .

0 голосов
/ 27 марта 2020

Если вы не хотите добавлять расписания в дни, меньшие текущей даты, вы можете написать код следующим образом:

selectable: true,
selectAllow: function(selectInfo) {
  var ms = moment(new Date()).subtract(1, 'day');
  return ms.isSameOrBefore(selectInfo.start);
},
...