Параметр onSelect в библиотеке Pikaday является одним из
ключевых механизмов для обработки событий выбора даты пользователем. Он
представляет собой функцию обратного вызова (callback), которая
вызывается каждый раз, когда пользователь выбирает дату в календаре.
Использование onSelect позволяет динамически реагировать на
действия пользователя, изменять интерфейс, синхронизировать данные с
другими элементами страницы или запускать дополнительную логику.
var picker = new Pikaday({
field: document.getElementById('datepicker'),
onSelect: function(date) {
// Логика обработки выбранной даты
}
});
date — объект Date,
соответствующий выбранной пользователем дате.this) указывает на
экземпляр Pikaday, что позволяет использовать методы календаря, например
getDate() или setDate().1. Отображение выбранной даты в поле ввода
var picker = new Pikaday({
field: document.getElementById('datepicker'),
onSelect: function(date) {
this._o.field.value = date.toDateString();
}
});
В данном примере значение поля ввода обновляется текстовым
представлением выбранной даты. Используется метод
toDateString(), который возвращает строку в формате
"Wed Jun 01 2026".
2. Форматирование даты с помощью
moment.js
var picker = new Pikaday({
field: document.getElementById('datepicker'),
format: 'YYYY-MM-DD',
onSelect: function(date) {
var formattedDate = moment(date).format('YYYY-MM-DD');
console.log('Выбрана дата:', formattedDate);
}
});
Использование сторонних библиотек для форматирования даты позволяет гибко управлять отображением и совместимостью с серверными API.
3. Взаимодействие с другими элементами интерфейса
var picker = new Pikaday({
field: document.getElementById('datepicker'),
onSelect: function(date) {
document.getElementById('dayOfWeek').textContent = date.toLocaleDateString('ru-RU', { weekday: 'long' });
}
});
Здесь при выборе даты автоматически отображается день недели в
отдельном элементе интерфейса. Функция toLocaleDateString с
параметром { weekday: 'long' } возвращает полное название
дня недели на русском языке.
this внутри onSelectКонтекст this в функции onSelect указывает
на текущий экземпляр Pikaday. Это позволяет управлять состоянием
календаря:
var picker = new Pikaday({
field: document.getElementById('datepicker'),
onSelect: function(date) {
console.log('Текущая дата календаря:', this.getDate());
this.hide(); // закрытие календаря после выбора даты
}
});
Методы, доступные через this:
getDate() — возвращает текущую выбранную дату.setDate(date) — устанавливает дату программно.show() — открывает календарь.hide() — скрывает календарь.gotoDate(date) — перемещает календарь к указанной дате
без изменения выбора.onSelectsetDate(), если передан флаг true вторым
аргументом.picker.setDate(new Date(), true); // onSelect сработает
picker.setDate(new Date()); // onSelect не сработает
minDate и
maxDate. Если выбранная дата выходит за допустимые границы,
onSelect не срабатывает.format — позволяет автоматически обновлять значение
поля ввода в нужном формате.field — обеспечивает привязку к конкретному
элементу.disableDayFn — можно использовать совместно с
onSelect, чтобы реагировать только на допустимые даты.i18n — при международной локализации можно адаптировать
отображение выбранной даты.Пример с комбинацией нескольких параметров:
var picker = new Pikaday({
field: document.getElementById('datepicker'),
minDate: new Date(),
maxDate: new Date(2026, 11, 31),
format: 'DD.MM.YYYY',
onSelect: function(date) {
console.log('Выбрана дата в формате DD.MM.YYYY:', this.getMoment().format('DD.MM.YYYY'));
}
});
this для доступа к текущему
экземпляру календаря, чтобы не опираться на глобальные переменные.onSelect корректно связывает данные с
конкретным полем.onSelect можно использовать для
триггера AJAX-запросов или обновления интерфейса.onSelect является базовым инструментом для интеграции
Pikaday с другими частями веб-приложения, обеспечивая точный контроль
над выбором даты и мгновенную реакцию интерфейса.