setDate — один из ключевых методов экземпляра Flatpickr,
предназначенный для программного управления выбранной датой (или набором
дат) в календаре без необходимости ручного взаимодействия пользователя с
интерфейсом.
fp.setDate(date, triggerChange, format);
Параметры:
date — значение даты или массива датtriggerChange — булево значение, определяющее
необходимость вызова событий onChangeformat — строка формата, используемая при передаче даты
в виде строкиМетод setDate обновляет внутреннее состояние Flatpickr и
синхронизирует его с UI-компонентом и input-полем. Он влияет сразу на
несколько уровней:
selectedDates)input.value)onChange,
onValueUpdate)При вызове метода календарь автоматически пересчитывает активное
состояние дней, диапазонов и выделений, если включены соответствующие
режимы (range, multiple,
time).
Базовый сценарий — установка одной даты:
fp.setDate(new Date(2026, 0, 15));
или строкой:
fp.setDate("2026-01-15");
При передаче строки Flatpickr использует текущий
dateFormat или явно заданный формат, если он указан третьим
аргументом.
Второй параметр позволяет управлять тем, будет ли инициировано событие изменения:
fp.setDate("2026-01-15", false);
В этом случае:
selectedDates обновляетсяonChange не вызываетсяТакой режим используется при программной инициализации, когда необходимо избежать побочных эффектов (например, повторных запросов к серверу).
Если требуется имитация пользовательского ввода:
fp.setDate("2026-01-15", true);
Это приводит к последовательному запуску:
onValueUpdateonChangeПри этом поведение полностью эквивалентно ручному выбору даты пользователем.
Третий параметр используется, когда входная строка не соответствует текущему формату Flatpickr:
fp.setDate("15/01/2026", false, "d/m/Y");
В этом случае Flatpickr:
DateВажно учитывать, что этот параметр влияет только на разбор входных
данных, но не изменяет глобальный dateFormat инстанса.
При включённой опции mode: "multiple" метод принимает
массив:
fp.setDate([
"2026-01-01",
"2026-01-10",
"2026-01-20"
]);
Поведение:
selectedDates, (по умолчанию)Если передан один элемент вместо массива, он интерпретируется как одиночная дата.
В режиме диапазона:
fp.setDate(["2026-01-01", "2026-01-15"]);
или:
fp.setDate("2026-01-01 to 2026-01-15");
Flatpickr:
Если передана только одна дата:
fp.setDate("2026-01-01");
то считается, что выбран только старт диапазона.
Повторный вызов setDate полностью перезаписывает текущее
состояние:
fp.setDate("2026-01-10");
fp.setDate("2026-01-20");
В результате останется только последняя дата.
Важно, что метод не добавляет значения к уже существующим (в отличие
от ручного выбора в multiple режиме через UI).
После вызова изменяются следующие структуры Flatpickr:
selectedDates — массив объектов DatelatestSelectedDateObj — последняя выбранная датаinput.value — строковое представлениеprevCalendarDates — вспомогательные кэши календаряТакже может происходить перерасчёт min/max ограничений отображения.
Если включён режим времени (enableTime: true),
setDate также задаёт время:
fp.setDate("2026-01-15 14:30");
При этом:
defaultHour, defaultMinute)fp.setDate("invalid-date");
Результат:
При наличии ограничений:
minDate: "2026-01-10",
maxDate: "2026-01-20"
и вызове:
fp.setDate("2026-01-25");
поведение зависит от версии и настроек:
Если дата отключена через disable, setDate
может:
Пример:
disable: ["2026-01-15"]
fp.setDate("2026-01-15");
Результат зависит от строгих правил валидации, заданных конфигурацией.
После выполнения метода происходит:
Если выбранная дата находится вне текущего отображаемого месяца, Flatpickr может автоматически переключить календарь на нужный месяц.
selectedDatessetDate — активный метод изменения состояния, тогда как
selectedDates — только отражение текущего состояния.
Прямое изменение:
fp.selectedDates = [new Date()];
не рекомендуется, поскольку:
Корректный способ:
fp.setDate(new Date());
Метод часто применяется в следующих ситуациях:
Пример:
function applyPresetLastWeek(fp) {
const end = new Date();
const start = new Date();
start.setDate(end.getDate() - 7);
fp.setDate([start, end], true);
}
При уничтожении и повторном создании экземпляра Flatpickr:
setDate не сохраняет состояние между инстансамиflatpickr() конструктораМетод может вызывать:
При частых вызовах (например, в цикле или при вводе данных) рекомендуется:
triggerChange = true