В Flatpickr управление выбором дат не ограничивается действиями пользователя в интерфейсе календаря. Библиотека предоставляет полноценный программный API, позволяющий изменять состояние календаря, устанавливать значения, переключать режимы отображения и синхронизировать данные с внешними компонентами приложения.
Ключевая особенность программного управления заключается в том, что внутреннее состояние календаря и значение input-поля могут контролироваться напрямую через методы экземпляра flatpickr, без необходимости эмуляции пользовательских действий.
После инициализации календаря возвращается экземпляр, через который осуществляется весь дальнейший контроль:
const fp = flatpickr("#dateInput", {
dateFormat: "Y-m-d"
});
Именно объект fp становится центральной точкой
управления. Он содержит состояние выбранных дат, текущую навигацию,
настройки и методы управления.
Метод setDate является основным инструментом
программного выбора дат.
fp.setDate("2026-06-15");
При вызове происходит:
fp.setDate("2026-06-15");
fp.setDate(new Date());
fp.setDate(["2026-06-10", "2026-06-20"]);
В режиме range метод принимает два значения:
fp.setDate(["2026-06-01", "2026-06-10"]);
Внутренне библиотека интерпретирует массив как начало и конец диапазона, обновляя подсветку промежуточных дней.
Метод поддерживает параметр triggerChange, позволяющий
контролировать вызов событий:
fp.setDate("2026-06-15", true); // вызовет onChange
fp.setDate("2026-06-15", false); // без событий
Для доступа к выбранным датам используется свойство:
console.log(fp.selectedDates);
Оно всегда возвращает массив объектов Date, даже если
выбран один элемент.
const first = fp.selectedDates[0];
Метод clear сбрасывает текущее значение:
fp.clear();
Поведение:
Можно управлять генерацией событий:
fp.clear(); // с событием onChange
fp.open();
Используется при необходимости показать календарь без пользовательского клика.
fp.close();
Часто применяется в связке с внешними элементами интерфейса, например после выбора даты в кастомном списке.
Flatpickr предоставляет методы управления отображаемым месяцем.
fp.jumpToDate("2026-12-01");
Метод не изменяет выбранное значение, а только перемещает календарь.
fp.changeMonth(1); // следующий месяц
fp.changeMonth(-1); // предыдущий месяц
fp.changeYear(2027);
При этом календарь автоматически перестраивает сетку дней.
Программное управление часто используется для связи с API или состоянием приложения.
fetch("/api/date")
.then(r => r.json())
.then(data => {
fp.setDate(data.date, false);
});
Такой подход позволяет обновлять календарь без генерации лишних событий.
В Flatpickr режимы single, multiple и range влияют на поведение программных методов.
fp.setDate(["2026-06-01", "2026-06-05", "2026-06-10"]);
Каждая дата добавляется в набор выбранных значений.
fp.setDate(["2026-06-01", "2026-06-10"]);
Если передан один элемент, он интерпретируется как старт диапазона.
При изменении настроек вручную иногда требуется перерисовка:
fp.redraw();
Используется при:
disable;minDate и maxDate;Хотя это не прямой выбор, программное управление часто связано с ограничениями.
fp.set("minDate", "2026-06-01");
fp.set("maxDate", "2026-06-30");
После изменения параметров календарь автоматически адаптирует доступные значения.
Метод set позволяет менять любые опции:
fp.set("dateFormat", "d.m.Y");
После изменения часть параметров применяется немедленно, другие требуют обновления UI.
Flatpickr разделяет пользовательские и программные изменения.
fp.setDate("2026-06-15", false);
При false не вызываются:
Это важно при синхронизации с внешним состоянием, чтобы избежать циклических обновлений.
Несмотря на наличие API, изменение input.value напрямую
не является корректным способом управления:
input.value = "2026-06-15"; // не рекомендуется
Правильный подход:
fp.setDate("2026-06-15");
Иначе внутреннее состояние календаря и UI могут рассинхронизироваться.
При сложных сценариях используется последовательное управление:
fp.set("minDate", "2026-01-01");
fp.set("maxDate", "2026-12-31");
fp.setDate("2026-06-15", false);
fp.jumpToDate("2026-06-15");
Такой подход позволяет контролировать порядок обновлений и предотвращать промежуточные рендеры.
Программный API используется в связке с кастомными календарями, фильтрами и формами.
Пример синхронизации с внешним селектором:
document.querySelector("#preset").addEventListener("change", (e) => {
const value = e.target.value;
fp.setDate(value);
});
При всей гибкости Flatpickr имеет ряд особенностей:
redraw;При сложных интерфейсах важно учитывать порядок вызовов:
Нарушение последовательности может приводить к неожиданному поведению интерфейса, особенно при динамической загрузке данных.
Программное управление в Flatpickr строится вокруг единого экземпляра календаря, через который осуществляется: