Инициализация Flatpickr через data-атрибуты позволяет полностью перенести конфигурацию календаря в разметку HTML, минимизируя JavaScript-код и упрощая декларативное описание поведения компонентов. Такой подход особенно полезен в шаблонизированных системах, CMS и при работе с серверно-рендеренными страницами, где логика должна быть максимально приближена к DOM.
Flatpickr не имеет «магии» автозапуска по умолчанию только на
основании HTML, но предоставляет возможность передавать конфигурацию
через data-* атрибуты при инициализации элементов. Это
означает, что JavaScript по-прежнему выполняет инициализацию, однако
параметры берутся непосредственно из DOM.
Базовая идея заключается в следующем:
data-* атрибутовflatpickr() без или с минимальной
конфигурациейHTML-разметка:
<input type="text"
class="datepicker"
data-date-format="Y-m-d"
data-default-date="2026-05-30">
Jav * aScript:
flatpickr(".datepicker");
В этом случае Flatpickr автоматически прочитает параметры:
data-date-format → формат отображения датыdata-default-date → значение по умолчаниюЭто минимальный вариант, при котором вся конфигурация сосредоточена в HTML.
Flatpickr поддерживает набор стандартных атрибутов, соответствующих ключам конфигурации. Они преобразуются из kebab-case в camelCase.
<input data-date-format="d.m.Y"
data-alt-format="F j, Y"
data-alt-input="true">
data-date-format — основной формат датыdata-alt-format — альтернативный формат
отображенияdata-alt-input — включение альтернативного
input-поля<input data-min-date="2026-01-01"
data-max-date="2026-12-31">
data-min-date — минимально допустимая датаdata-max-date — максимально допустимая датаFlatpickr интерпретирует строки дат в стандартном ISO-формате или в формате, совместимом с JavaScript Date.
<input data-enable-time="true"
data-no-calendar="false"
data-time_24hr="true">
data-enable-time — добавляет выбор времениdata-no-calendar — отключает календарную сеткуdata-time_24hr — переключает 24-часовой форматВажно учитывать, что некоторые атрибуты чувствительны к точному
имени, включая подчёркивания, как в time_24hr.
Часто используется комбинированный подход: базовые параметры задаются в JavaScript, а специфичные — в HTML.
flatpickr(".datepicker", {
enableTime: true,
dateFormat: "Y-m-d"
});
HTML:
<input class="datepicker"
data-min-date="today"
data-max-date="2026-12-31">
Такой подход позволяет:
Flatpickr поддерживает несколько режимов выбора дат:
<input data-mode="single">
<input data-mode="multiple">
<input data-mode="range">
single — выбор одной датыmultiple — выбор нескольких датrange — выбор диапазонаОсобенно часто используется range для форм бронирования
и фильтрации дат.
Flatpickr поддерживает режим wrap, когда календарь
привязан не к input напрямую, а к контейнеру.
HTML:
<div class="flatpickr" data-wrap="true">
<input type="text" data-input>
<a class="input-button" data-toggle>?</a>
</div>
Jav * aScript:
flatpickr(".flatpickr", {
wrap: true
});
Ключевые элементы:
data-wrap="true" — включает обработку контейнераdata-input — определяет поле вводаdata-toggle — элемент, открывающий календарьЭтот режим часто используется в UI-компонентах с кнопками и иконками.
<input data-inline="true"
data-click-opens="false">
data-inline — отображает календарь сразу в DOM без
всплытияdata-click-opens — отключает открытие по кликуInline-режим применяется в виджетах и панелях фильтрации.
Некоторые параметры Flatpickr требуют массивов или объектов. В data-атрибутах они сериализуются в строку.
<input data-disable="2026-01-01,2026-01-10,2026-01-20">
Значения разделяются запятыми и интерпретируются как список дат.
<input data-disable="2026-01-01 to 2026-01-05">
Flatpickr понимает выражение to как диапазон
исключений.
Хотя локали чаще подключаются через JavaScript, часть настроек может задаваться декларативно:
<input data-date-format="d.m.Y"
data-week-start="1">
data-week-start — определяет первый день недели
(0–воскресенье, 1–понедельник)Для полноценной локализации всё же требуется подключение модуля локали в JavaScript, но data-атрибуты позволяют уточнять поведение отображения.
Использование data-атрибутов имеет ряд ограничений, связанных с архитектурой Flatpickr:
onChange, onOpen) через HTMLТаким образом, data-инициализация подходит для конфигурации, но не для логики.
На практике используется схема:
flatpickr(".datepicker", {
onChange: function(selectedDates, dateStr) {
console.log("Выбрана дата:", dateStr);
}
});
<input class="datepicker"
data-date-format="Y-m-d"
data-min-date="today">
Такой подход обеспечивает баланс между декларативностью и программируемостью.
При большом количестве элементов используется единая точка инициализации:
document.querySelectorAll("[data-datepicker]").forEach(el => {
flatpickr(el);
});
HTML:
<input data-datepicker data-date-format="Y-m-d">
<input data-datepicker data-date-format="d.m.Y">
Здесь data-datepicker выступает маркером поведения, а
остальные data-* задают конфигурацию.
Использование data-инициализации в Flatpickr формирует декларативный слой интерфейса:
Такой подход снижает связность кода и упрощает поддержку интерфейсов с большим количеством календарных полей, особенно в административных панелях и формах с динамическими шаблонами.