В Pikaday параметр formatStrict управляет режимом
разбора строки даты при преобразовании значения из текстового поля в
объект Date. Он влияет исключительно на процесс парсинга
входного значения, когда календарь синхронизируется с
input-элементом или при программной установке даты через
строку с использованием заданного формата.
Ключевая идея параметра заключается в различии между гибким и строгим разбором строковой даты:
formatStrict: false допускаются частичные
совпадения формата и «похожие» даты;formatStrict: true строка обязана строго
соответствовать заданному формату без отклонений.При включении formatStrict библиотека требует полного
соответствия строки шаблону, заданному через format.
Например, при конфигурации:
new Pikaday({
field: document.getElementById('date'),
format: 'DD.MM.YYYY',
formatStrict: true
});
строка "01.02.2026" будет корректно распознана, а строки
вида:
"1.2.2026" (отсутствуют ведущие нули),"01-02-2026" (другой разделитель),"01.02.26" (неполный год)будут считаться невалидными.
При formatStrict: false некоторые из этих вариантов
могут быть интерпретированы корректно в зависимости от используемого
парсера (встроенного или внешнего, например Moment.js).
Параметр особенно важен в сценариях, где календарь связан с текстовым полем.
При вводе пользователем строки:
formatStrict: true, то любое несоответствие
формату приводит к тому, что значение не преобразуется в
Date, а календарь остаётся без обновления;formatStrict: false, Pikaday пытается «угадать»
дату и привести строку к допустимому объекту.Это влияет на поведение события onSelect, так как оно не
будет вызвано при невалидной строке в строгом режиме.
formatformatStrict не имеет смысла без явно заданного
format. Формат определяет структуру строки, например:
DD.MM.YYYYYYYY-MM-DDMM/DD/YYYYСтрогий режим усиливает контроль именно над этим шаблоном.
Особенно важно учитывать следующие аспекты:
При строгом режиме все эти элементы становятся жёсткими правилами парсинга.
Если строка не соответствует формату при
formatStrict: true, происходит следующее:
input сохраняет исходный текст.Date не создаётся или становится
null (в зависимости от конфигурации и версии).Пример:
const picker = new Pikaday({
field: document.getElementById('date'),
format: 'YYYY-MM-DD',
formatStrict: true
});
picker.setDate('2026-13-40');
Результат: дата не будет установлена, так как месяц и день выходят за допустимые диапазоны.
В зависимости от сборки Pikaday может использовать:
Date.parse,formatStrict усиливает поведение внешнего парсера:
moment(str, format, true);invalid date.formatStrict: false)formatStrict: true)Если интерфейс предполагает ввод DD.MM.YYYY, но
пользователь вводит DD/MM/YYYY, строгий режим полностью
блокирует парсинг.
Без маски ввода пользователь может легко нарушить формат, что приводит к «пустому» состоянию даты.
При использовании локализованных форматов (MM/DD/YYYY vs
DD.MM.YYYY) строгий режим фиксирует только один вариант,
что может вызвать ошибки в международных приложениях.
formatStrict особенно полезен в случаях:
Менее уместен параметр в:
Строгий режим увеличивает предсказуемость поведения системы за счёт устранения неоднозначных интерпретаций строк. Однако он одновременно повышает требования к точности ввода.
В прикладных интерфейсах это выражается в:
new Pikaday({
field: document.getElementById('date'),
format: 'DD.MM.YYYY',
formatStrict: true,
onSelect: function(date) {
console.log('Выбрана дата:', date);
}
});
В такой конфигурации любая дата, поступающая из input,
обязана строго соответствовать шаблону, иначе обработка не
произойдёт.