Я хотел бы узнать, как я могу ограничить fullcalendar для показа периода трех месяцев и deselectable для остальной части месяцев как в datepicker?
Например, текущий месяц является маем 2010, я только хотел бы, чтобы календарь показал май и апрель (при нажатии предыдущего месяца), и июнь (при нажатии на следующий месяц), остальная часть месяцев будет невыбранной от пользовательского выбора.
Я не уверен, избежал ли я читать какую-либо часть на fullcalendar документации. Любезно советуйте.Спасибо.
Я не делал этого, поэтому не уверен, что это сработает. Но вы можете хотя бы попробовать и посмотреть.
Я бы, вероятно, посмотрел на настройку обратного вызова 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
}
}
});
Есть много способов сделать логику и математику даты, но я думаю, что вы можете получить что-то работающее таким образом.