Я этого не делал, поэтому не уверен, что это сработает. Но вы могли бы хотя бы попытаться увидеть.
Возможно, я бы посмотрел на настройку обратного вызова viewDisplay
. Он получает Просмотр объекта , который среди прочего содержит свойство start
. Вы можете использовать свойства объекта «Просмотр», чтобы проверить, какое представление и дату просматривает пользователь, а затем выполнить действия на его основе.
Я не уверен, что fullcalendar работает таким образом, но некоторые плагины прервут действие, если вы return false
ответите. Таким образом, вы можете проверить дату start
и, если она выходит за пределы допустимых месяцев, return false
отменить действие.
Если это не сработает, внутри viewDisplay
вы можете снова проверить дату start
. Если следующий месяц или предыдущий месяц выходит за пределы диапазона, вы можете использовать селекторы jQuery, чтобы получить кнопки «предыдущий / следующий» и отключить их. Таким образом, пользователь не сможет переключиться на недопустимый месяц.
Кроме того, если пользователь находится в месяце, выходящем за пределы допустимого диапазона, вы можете немедленно выполнить команду 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
}
}
});
Есть много способов проработать здесь логику и математику, но я думаю, что вы могли бы получить что-то, работающее таким образом.