Метод changeMonth в экземпляре Flatpickr используется
для программного переключения отображаемого месяца календаря без
изменения выбранной даты (если явно не происходит выбор). Он относится к
управляющим методам навигации внутри календарного UI и воздействует
исключительно на состояние отображения.
fp.changeMonth(month, is_offset);
month Тип: number Определяет целевой
месяц или смещение относительно текущего месяца, в зависимости от режима
использования.
is_offset = false — задаётся абсолютный индекс
месяца (0–11)is_offset = true — задаётся относительное смещение
(например, 1 — следующий месяц, -1 —
предыдущий)is_offset Тип: boolean По умолчанию:
false
Определяет режим интерпретации первого аргумента:
false — переход к конкретному месяцу годаtrue — смещение относительно текущего отображаемого
месяцаМетод изменяет внутреннее состояние календаря Flatpickr, отвечающее
за текущий отображаемый месяц (currentMonth и при
необходимости currentYear), после чего инициирует
перерисовку интерфейса.
При вызове происходит:
minDate и
maxDateВажно учитывать, что метод не изменяет выбранную дату напрямую, если она не пересекается с логикой внутренней синхронизации.
При is_offset = false передаётся конкретный номер
месяца:
fp.changeMonth(0); // январь
fp.changeMonth(6); // июль
fp.changeMonth(11); // декабрь
Если текущий год содержит ограничения по датам, Flatpickr автоматически скорректирует доступность дней.
При выходе за допустимый диапазон дат возможна автоматическая коррекция отображения к ближайшему валидному состоянию.
При is_offset = true параметр month
трактуется как шаг:
fp.changeMonth(1, true); // следующий месяц
fp.changeMonth(-1, true); // предыдущий месяц
Особенности:
11) на следующий месяц
автоматически увеличивается годМетод влияет исключительно на визуальное и навигационное состояние:
currentMonth обновляетсяcurrentYear может изменятьсяselectedDates не изменяются напрямуюinput.value остаётся без изменений, если не происходит
дополнительного действия выбораПри активных ограничениях диапазона дат метод может вести себя следующим образом:
При вызове changeMonth могут срабатывать следующие
события:
onMonthChange — при изменении месяцаonYearChange — при переходе через границу годаonValueUpdate — если изменение влияет на выбранную дату
(косвенно)События срабатывают после завершения перерасчёта состояния календаря.
const fp = flatpickr("#input");
fp.changeMonth(3); // переход на апрель
fp.changeMonth(1, true); // следующий месяц
fp.changeMonth(-1, true); // предыдущий месяц
document.querySelector("#next").addEventListener("click", () => {
fp.changeMonth(1, true);
});
document.querySelector("#prev").addEventListener("click", () => {
fp.changeMonth(-1, true);
});
При вызове метода происходит пересборка календарной сетки:
locale.firstDayOfWeek)Процесс оптимизирован для минимального количества перерисовок, однако при частых вызовах возможны заметные DOM-операции.
nextMonth / prevMonth
changeMonth(±1, true)changeMonth
При переходе через границы года:
currentYearcurrentYeardisable) метод может не
иметь визуального эффекта, но внутреннее состояние обновитсяПри работе метода затрагиваются:
currentMonthcurrentYeardaysContainermonthElementsyearElementsЭти элементы пересоздаются или обновляются при каждой навигации, обеспечивая актуальность отображаемой сетки календаря.