Параметр blurFieldOnSelect в библиотеке Pikaday
управляет поведением поля ввода (input) после выбора даты пользователем.
Он определяет, будет ли поле терять фокус (blur) сразу после того, как
пользователь выбрал значение в календаре.
Этот параметр относится к группе UX-настроек, влияющих не на логику вычисления даты, а на взаимодействие пользователя с компонентом.
При выборе даты в календаре Pikaday обычно:
autoClose)blurFieldOnSelect управляет последним шагом —
фокусом.
Параметр принимает логическое значение:
blurFieldOnSelect: true | false
trueЕсли blurFieldOnSelect установлен в true,
происходит следующее:
blur на поле вводаautoClose)falseЕсли blurFieldOnSelect установлен в
false:
autoCloseПараметр тесно связан с autoClose, который отвечает за
закрытие календаря после выбора даты.
| autoClose | blurFieldOnSelect | Поведение |
|---|---|---|
| true | true | календарь закрывается + input теряет фокус |
| true | false | календарь закрывается + фокус остаётся |
| false | true | календарь остаётся открыт + input теряет фокус |
| false | false | календарь открыт + фокус остаётся |
Особое внимание требуется к комбинации autoClose: false
и blurFieldOnSelect: true, так как пользователь может
потерять фокус, но календарь останется активным визуально.
true)В системах бронирования (отели, билеты) чаще используется:
blurFieldOnSelect: true
Причина — пользователь обычно выбирает одну дату и переходит дальше.
При выборе диапазона (start/end date):
blurFieldOnSelect: false
Причина — требуется последовательный выбор двух значений без потери фокуса.
В интерфейсах управления данными:
blurFieldOnSelect: false
Это позволяет быстро корректировать значения без повторного открытия календаря.
var picker = new Pikaday({
field: document.getElementById('date'),
blurFieldOnSelect: true,
autoClose: true
});
При включённом blurFieldOnSelect важно учитывать порядок
событий:
onSelectchangeblurcloseПри true событие blur может сработать сразу
после onSelect, что влияет на внешние обработчики
формы.
Если приложение зависит от постоянного фокуса input (например, маски
ввода), установка true может нарушить поведение.
При интеграции с автокомплитом браузера или сторонними библиотеками:
На мобильных браузерах:
true закрывает клавиатуруfalse может оставлять клавиатуру открытой поверх
календаря, что ухудшает UXtruefalsefalsetrueПри использовании onSelect часто добавляется
дополнительная логика:
onSelect: function(date) {
// обработка выбранной даты
}
Если blurFieldOnSelect: true, важно учитывать, что:
autoClose — управляет закрытием календаряblurFieldOnSelect — управляет только фокусом inputdisableInput — блокирует ручной ввод полностьюЭти параметры часто путают, но они относятся к разным уровням поведения компонента.