Параметры altInput и altFormat относятся к
механизмам отображения даты в Flatpickr и позволяют разделить
внутреннее значение поля и визуальное
представление даты для пользователя.
По умолчанию Flatpickr использует одно и то же значение одновременно
для хранения данных и для отображения. Если задан формат
Y-m-d, то именно такой текст будет находиться в поле
ввода:
flatpickr("#date", {
dateFormat: "Y-m-d"
});
После выбора даты пользователь увидит:
2026-05-15
Во многих интерфейсах такой формат удобен для обработки программой,
но неудобен для человека. Для решения этой задачи используются параметры
altInput и altFormat.
altInputaltInput включает создание дополнительного текстового
поля, которое отображается пользователю вместо исходного элемента.
flatpickr("#date", {
altInput: true
});
После активации происходит следующее:
<input>.Схематично это выглядит так:
<input type="hidden" name="date" value="2026-05-15">
<input type="text" value="15 мая 2026">
Таким образом достигается разделение между данными приложения и пользовательским интерфейсом.
Рассмотрим конфигурацию:
flatpickr("#date", {
altInput: true,
dateFormat: "Y-m-d",
altFormat: "d.m.Y"
});
При выборе даты:
15 мая 2026
в скрытом поле будет сохранено:
2026-05-15
Если форма отправляется на сервер, передается именно значение из оригинального элемента.
Это особенно важно для:
altFormataltFormat определяет формат отображения даты в
альтернативном поле.
Используется только совместно с altInput.
Пример:
flatpickr("#date", {
altInput: true,
altFormat: "d.m.Y"
});
Результат отображения:
15.05.2026
Если параметр не указан, Flatpickr использует собственный формат по умолчанию.
Чаще всего altFormat задается явно для полного контроля
над отображением.
dateFormat и altFormatНаиболее важный момент заключается в том, что эти параметры выполняют разные задачи.
dateFormatОпределяет формат хранения значения.
dateFormat: "Y-m-d"
Результат:
2026-05-15
altFormatОпределяет формат отображения.
altFormat: "d.m.Y"
Результат:
15.05.2026
Полная конфигурация:
flatpickr("#date", {
altInput: true,
dateFormat: "Y-m-d",
altFormat: "d.m.Y"
});
Пользователь видит:
15.05.2026
Сервер получает:
2026-05-15
Одна из самых распространенных схем:
flatpickr("#birthday", {
altInput: true,
dateFormat: "Y-m-d",
altFormat: "d F Y"
});
Отображение:
15 May 2026
Передаваемое значение:
2026-05-15
Такой подход позволяет одновременно обеспечить:
altFormat поддерживает все токены форматирования
Flatpickr.
Пример:
flatpickr("#event", {
altInput: true,
dateFormat: "Y-m-d",
altFormat: "l, d F Y"
});
Результат:
Friday, 15 May 2026
Такой формат часто применяется:
Часто используется следующий вариант:
flatpickr("#date", {
altInput: true,
dateFormat: "Y-m-d",
altFormat: "d F Y"
});
Результат:
15 May 2026
Преимущества:
altFormat работает не только с датой, но и со
временем.
Пример:
flatpickr("#meeting", {
enableTime: true,
altInput: true,
dateFormat: "Y-m-d H:i",
altFormat: "d.m.Y H:i"
});
Отображение:
15.05.2026 14:30
Скрытое значение:
2026-05-15 14:30
Можно создавать более удобные представления времени:
flatpickr("#meeting", {
enableTime: true,
time_24hr: false,
altInput: true,
dateFormat: "Y-m-d H:i",
altFormat: "F j, Y h:i K"
});
Результат:
May 15, 2026 02:30 PM
При этом сервер по-прежнему получает значение в формате, указанном в
dateFormat.
altFormatОсобенно полезным параметр становится при использовании локалей.
Пример:
flatpickr("#date", {
locale: "ru",
altInput: true,
dateFormat: "Y-m-d",
altFormat: "d F Y"
});
Отображение:
15 мая 2026
Хранимое значение:
2026-05-15
Получается удобный для пользователя интерфейс без потери стандартизированного формата данных.
Создаваемый элемент наследует классы исходного поля.
Исходная разметка:
<input
id="date"
class="form-control custom-date"
/>
Конфигурация:
flatpickr("#date", {
altInput: true
});
Сгенерированное альтернативное поле также получает соответствующие CSS-классы.
Это позволяет использовать существующую систему оформления без дополнительных настроек.
altInputClassДля альтернативного поля можно добавить собственный класс.
flatpickr("#date", {
altInput: true,
altInputClass: "pretty-date"
});
После создания элемента класс будет добавлен автоматически.
Такой подход полезен при необходимости отдельного оформления отображаемого поля.
Параметры не конфликтуют с ограничениями диапазона.
flatpickr("#date", {
altInput: true,
dateFormat: "Y-m-d",
altFormat: "d F Y",
minDate: "today",
maxDate: "2026-12-31"
});
Пользователь видит красивую дату:
15 мая 2026
Но ограничения продолжают работать относительно фактического значения.
В режиме выбора периода возможности остаются такими же.
flatpickr("#range", {
mode: "range",
altInput: true,
dateFormat: "Y-m-d",
altFormat: "d.m.Y"
});
Отображение:
01.05.2026 to 15.05.2026
Внутреннее значение:
2026-05-01 to 2026-05-15
Это особенно удобно для систем бронирования и отчетности.
dateFormat: "Y-m-d"
2026-05-15
Отображение:
altFormat: "d.m.Y"
15.05.2026
altFormat: "l, d F Y"
Результат:
Friday, 15 May 2026
altFormat: "d F Y H:i"
Результат:
15 May 2026 14:30
flatpickr("#booking", {
enableTime: true,
altInput: true,
dateFormat: "Y-m-d H:i",
altFormat: "d F Y, H:i"
});
Пользователь видит понятную дату бронирования, а система получает строго структурированное значение.
altFormat без altInputНеправильно:
flatpickr("#date", {
altFormat: "d.m.Y"
});
Параметр не окажет ожидаемого эффекта, поскольку альтернативное поле не создается.
Правильно:
flatpickr("#date", {
altInput: true,
altFormat: "d.m.Y"
});
dateFormat и altFormatflatpickr("#date", {
altInput: true,
dateFormat: "Y-m-d",
altFormat: "Y-m-d"
});
В этом случае использование альтернативного поля практически теряет смысл, поскольку отображаемое и сохраняемое значения совпадают.
Пример:
altFormat: "l, F d, Y h:i K"
Формально работает корректно, однако для многих интерфейсов подобная запись оказывается избыточной.
Обычно предпочтительнее использовать краткие и легко читаемые форматы:
altFormat: "d.m.Y"
или
altFormat: "d F Y"
После инициализации Flatpickr:
flatpickr("#date", {
altInput: true,
dateFormat: "Y-m-d",
altFormat: "d.m.Y"
});
происходит следующая последовательность действий:
dateFormat.altFormat.Благодаря этому механизму можно одновременно получать удобный пользовательский интерфейс и строго структурированные данные для дальнейшей обработки.