Событие onValueUpdate относится к внутреннему циклу
обновления значения календаря и вызывается в момент, когда строковое
представление выбранной даты или дат пересчитывается и синхронизируется
с состоянием экземпляра. В отличие от более очевидных событий выбора
(onChange) или открытия календаря (onOpen),
onValueUpdate ориентировано на уровень синхронизации
данных, а не на пользовательское действие.
onValueUpdate в жизненном цикле FlatpickrВнутренний жизненный цикл экземпляра можно условно разделить на несколько этапов:
altInput,
input.value, форматы dateFormat).onValueUpdate.onChange.Таким образом, onValueUpdate фиксирует момент, когда
значение уже пересчитано, но ещё не обязательно интерпретируется как
«изменение выбора пользователем».
Событие определяется в конфигурации экземпляра:
flatpickr("#date", {
onValueUpdate: function(selectedDates, dateStr, instance) {
// логика обработки
}
});
Параметры:
Date,
отражающий текущее состояние выбора.dateFormat или altFormat.onChangeКлючевая разница между onValueUpdate и
onChange заключается в уровне семантики:
onValueUpdate срабатывает при любом обновлении
отображаемого значения.onChange срабатывает только при фактическом изменении
выбора пользователем или программной установке, которая приводит к
изменению набора дат.Это различие особенно заметно в сценариях:
altInput;setDate, где значение может
перерасчитываться несколько раз;При вызове методов API, например:
instance.setDate("2026-05-01");
цепочка событий может выглядеть следующим образом:
dateStr;onValueUpdate;onChange (в зависимости от
параметров setDate).Это делает onValueUpdate полезным для отслеживания
промежуточных состояний, когда onChange ещё не
гарантирован.
Событие применяется в задачах, где важно реагировать на любое изменение представления даты, а не только на финальный выбор:
При ручном вводе даты в поле поведение становится более «потоковым»:
dateStr обновляется чаще, чем фактический выбор
даты;onValueUpdate может срабатывать чаще, чем
onChange.Это важно учитывать при обработке событий, чтобы избежать избыточных вычислений.
В режиме mode: "range" событие приобретает
дополнительную значимость:
flatpickr("#range", {
mode: "range",
onValueUpdate: function(selectedDates, dateStr, instance) {
console.log(dateStr);
}
});
В этом режиме:
dateStr может содержать неполные данные.onValueUpdate тесно связан с форматированием:
dateFormat — основной формат строки значения;altInput и altFormat — альтернативное
отображение;locale) влияет на итоговую строку.Любое изменение этих параметров приводит к пересчёту
dateStr, что может активировать событие даже без изменения
выбранных дат.
На частоту срабатывания влияют параметры:
enableTime — добавляет пересчёт времени;time_24hr — влияет на форматирование строки;defaultDate — может инициировать первичный вызов;allowInput — усиливает поток обновлений при ручном
вводе;mode — single, multiple, range изменяют структуру
данных.При неправильной архитектуре обработчиков возможны следующие эффекты:
onValueUpdate и
onChange;Для минимизации нагрузки обычно выделяют лёгкий слой обработки именно
в onValueUpdate, оставляя тяжёлые операции для
onChange.
При вызове:
instance.clear();
происходит:
onValueUpdate с пустыми данными;onChange, если состояние
изменилось.Это делает событие полезным для отслеживания момента «визуального обнуления» поля.
onValueUpdate выполняет роль низкоуровневого сигнала
синхронизации. Он находится между внутренними механизмами перерасчёта и
пользовательскими событиями выбора. Его поведение ориентировано на
состояние отображения, а не на семантику выбора, что делает его важным
инструментом при построении сложных интерфейсов поверх календаря.