Метод set() в Flatpickr предназначен для динамического
изменения параметров уже созданного экземпляра календаря. В отличие от
первоначальной конфигурации, которая передаётся при инициализации,
set() позволяет менять настройки во время работы приложения
без полного пересоздания компонента.
Такой подход особенно важен в интерактивных интерфейсах, где параметры выбора даты зависят от действий пользователя, данных сервера, выбранных опций формы или других элементов страницы.
Общий синтаксис метода выглядит следующим образом:
instance.set(option, value);
где:
option — название изменяемого параметра;value — новое значение параметра.Простейший пример:
const calendar = flatpickr("#date", {
minDate: "2025-01-01"
});
calendar.set("minDate", "2025-06-01");
После вызова метода минимальная доступная дата изменится без переинициализации календаря.
Каждый экземпляр Flatpickr содержит объект конфигурации:
calendar.config
Технически параметры можно менять напрямую:
calendar.config.minDate = "2025-06-01";
Однако такой подход не гарантирует обновления внутреннего состояния компонента.
Правильный вариант:
calendar.set("minDate", "2025-06-01");
Метод выполняет дополнительные действия:
Именно поэтому для изменения настроек всегда рекомендуется
использовать set().
Одним из наиболее распространённых сценариев является изменение ограничения снизу.
Исходная конфигурация:
const calendar = flatpickr("#date", {
minDate: "2025-01-01"
});
Позже ограничение может измениться:
calendar.set("minDate", "2025-07-01");
После выполнения:
Аналогичным образом работает параметр maxDate.
Первоначальная настройка:
const calendar = flatpickr("#date", {
maxDate: "2025-12-31"
});
Изменение:
calendar.set("maxDate", "2025-09-30");
Теперь выбор будет ограничен сентябрём.
Подобная техника часто используется в системах бронирования и планирования событий.
Минимальная и максимальная даты могут изменяться совместно.
calendar.set("minDate", "2025-06-01");
calendar.set("maxDate", "2025-06-30");
В результате пользователь сможет выбирать только даты июня.
Подобный подход применяется для:
Параметр dateFormat также можно изменять
динамически.
Начальная конфигурация:
const calendar = flatpickr("#date", {
dateFormat: "Y-m-d"
});
Изменение:
calendar.set("dateFormat", "d.m.Y");
После обновления новое значение будет отображаться в другом формате.
Например:
2025-08-15
превратится в:
15.08.2025
Flatpickr поддерживает работу не только с датами, но и со временем.
Создание календаря:
const calendar = flatpickr("#date");
Включение выбора времени:
calendar.set("enableTime", true);
Теперь появятся элементы управления временем.
Обратное действие:
calendar.set("enableTime", false);
Компонент снова станет обычным календарём.
Можно динамически менять отображение времени.
Например:
calendar.set("time_24hr", true);
После этого вместо формата:
2:30 PM
будет использоваться:
14:30
Обратное переключение:
calendar.set("time_24hr", false);
Параметр mode определяет способ выбора дат.
Доступны режимы:
singlemultiplerangeИсходная настройка:
const calendar = flatpickr("#date", {
mode: "single"
});
Переключение:
calendar.set("mode", "range");
Теперь календарь позволяет выбирать начало и конец диапазона.
Для множественного выбора:
calendar.set("mode", "multiple");
Параметр showMonths отвечает за число одновременно
отображаемых календарей.
Обычный вариант:
calendar.set("showMonths", 2);
Интерфейс станет таким:
Июнь 2025 | Июль 2025
Три месяца:
calendar.set("showMonths", 3);
Это удобно для выбора длинных диапазонов дат.
Flatpickr поддерживает большое количество языков.
Если локализация подключена заранее:
calendar.set("locale", "ru");
Позже можно переключиться:
calendar.set("locale", "en");
или
calendar.set("locale", "de");
Календарь обновит:
В некоторых странах неделя начинается с воскресенья, в других — с понедельника.
Настройка через объект локализации:
calendar.set("locale", {
firstDayOfWeek: 1
});
Понедельник станет первым днём недели.
Для воскресенья:
calendar.set("locale", {
firstDayOfWeek: 0
});
Параметр enable определяет список доступных дат.
Пример:
calendar.set("enable", [
"2025-07-01",
"2025-07-02",
"2025-07-03"
]);
После обновления остальные даты станут недоступными.
Это полезно для:
Параметр disable работает противоположным образом.
calendar.set("disable", [
"2025-12-31",
"2026-01-01"
]);
Указанные даты окажутся недоступными.
Частые сценарии:
Метод set() поддерживает передачу функций.
Пример запрета воскресений:
calendar.set("disable", [
function(date) {
return date.getDay() === 0;
}
]);
Запрет распространяется автоматически на все воскресенья независимо от месяца и года.
Положение всплывающего окна также можно менять динамически.
calendar.set("position", "above");
или
calendar.set("position", "below");
Также поддерживаются комбинированные варианты:
calendar.set("position", "auto center");
Flatpickr позволяет хранить значение в одном формате, а отображать в другом.
Включение режима:
calendar.set("altInput", true);
Изменение формата:
calendar.set("altFormat", "d.m.Y");
Пользователь увидит:
15.08.2025
а реальное значение поля останется:
2025-08-15
При необходимости можно вызывать метод несколько раз подряд.
calendar.set("enableTime", true);
calendar.set("time_24hr", true);
calendar.set("dateFormat", "Y-m-d H:i");
После выполнения календарь станет поддерживать 24-часовое время и новый формат отображения.
Для сложных интерфейсов такой подход является наиболее распространённым.
Метод особенно полезен при работе с AJAX.
Пример:
fetch("/api/available-dates")
.then(response => response.json())
.then(data => {
calendar.set("enable", data.availableDates);
});
После получения ответа список доступных дат мгновенно обновится.
Переинициализация компонента при этом не требуется.
Настройки могут изменяться в ответ на действия пользователя.
countrySelect.addEventListener("change", () => {
if (countrySelect.value === "US") {
calendar.set("dateFormat", "m/d/Y");
} else {
calendar.set("dateFormat", "d.m.Y");
}
});
Интерфейс автоматически адаптируется под выбранную страну.
Часто один календарь влияет на другой.
Например, выбор даты начала поездки ограничивает дату окончания.
startCalendar.config.onChange.push(function(selectedDates) {
endCalendar.set("minDate", selectedDates[0]);
});
После выбора начальной даты второй календарь запрещает более ранние значения.
Такой механизм широко используется при выборе диапазонов.
Метод set() выполняет внутреннее обновление компонента.
При единичных изменениях нагрузка практически незаметна.
Однако при большом количестве операций подряд:
for (let i = 0; i < 1000; i++) {
calendar.set("minDate", someDate);
}
будут выполняться многочисленные перерасчёты интерфейса.
В подобных ситуациях рекомендуется минимизировать число вызовов и обновлять параметры только при реальной необходимости.
Неправильно:
calendar.config.maxDate = "2025-12-31";
Правильно:
calendar.set("maxDate", "2025-12-31");
calendar.set("unknownOption", 123);
Такой код не приведёт к ожидаемому результату.
Следует использовать только поддерживаемые параметры конфигурации Flatpickr.
Неправильно:
calendar.set("minDate", "31-12-2025");
Правильно:
calendar.set("minDate", "2025-12-31");
или объект даты:
calendar.set("minDate", new Date());
Например:
calendar.set("enableTime", true);
calendar.set("noCalendar", true);
Такое сочетание требует понимания того, как параметры взаимодействуют между собой, иначе интерфейс может вести себя неожиданным образом.
Метод set() является центральным механизмом динамической
конфигурации Flatpickr. Он позволяет изменять практически любые
параметры экземпляра после его создания, автоматически синхронизируя
внутреннее состояние компонента и пользовательский интерфейс. Благодаря
этому календарь может адаптироваться к данным приложения в реальном
времени без удаления и повторной инициализации экземпляра.