Fullcalendar ограничивают дисплей доступных месяцев?

Я хотел бы узнать, как я могу ограничить fullcalendar для показа периода трех месяцев и deselectable для остальной части месяцев как в datepicker?

Например, текущий месяц является маем 2010, я только хотел бы, чтобы календарь показал май и апрель (при нажатии предыдущего месяца), и июнь (при нажатии на следующий месяц), остальная часть месяцев будет невыбранной от пользовательского выбора.

Я не уверен, избежал ли я читать какую-либо часть на fullcalendar документации. Любезно советуйте.Спасибо.

8
задан jl. 28 May 2010 в 09:03
поделиться

1 ответ

Я не делал этого, поэтому не уверен, что это сработает. Но вы можете хотя бы попробовать и посмотреть.

Я бы, вероятно, посмотрел на настройку обратного вызова viewDisplay. Он получает объект View Object, который содержит start свойство, среди прочих. Вы можете использовать свойства объекта View для проверки того, на какой вид и дату смотрит пользователь, а затем выполнять действия на основе этого.

Я не уверен, что fullcalendar работает таким образом, но некоторые плагины прерывают действие, если вы возвращаете false из обратного вызова. Таким образом, вы можете проверить начальную дату и если она выходит за пределы допустимого диапазона месяцев, то вернуть false, чтобы прервать действие.

Если это не сработает, внутри viewDisplay вы можете снова проверить start дату. Если следующий месяц или предыдущий месяц находятся вне диапазона, то можно использовать селекторы jQuery для захвата кнопок prev/next и отключения их. Таким образом, пользователь не сможет переключиться на месяц, находящийся вне диапазона.

Также, если пользователь находится в месяце, не входящем в диапазон, вы можете немедленно выдать команду gotoDate для перехода к действительному месяцу.

$('#calendar').fullCalendar({
    viewDisplay: function(view) {
        // maybe return false aborts action? 
        if (view.start > lastDayOfNextMonth) {
            return false;
        }
        // or disable next button if this is last valid month
        if (view.end + oneDay >= lastValidDate) {
            $("#calendar #fc-button-next").attr("disabled","disabled");
        }
        // or gotoDate if view.start is out of range
        if (view.start > lastValidDate) {
           // gotoDate
        }
    }
});

Есть много способов сделать логику и математику даты, но я думаю, что вы можете получить что-то работающее таким образом.

4
ответ дан 5 December 2019 в 05:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: