Pikaday представляет собой лёгкий date picker, который привязывается к обычному input-полю и не требует сложной инфраструктуры. Минимальный рабочий пример строится вокруг трёх компонентов: HTML-разметки, подключения скриптов и инициализации календаря.
Основой служит обычное поле ввода, в которое будет подставляться выбранная дата:
<input type="text" id="datepicker">
Важно использовать именно text, так как библиотека
подменяет стандартное поведение поля, а date-тип может
конфликтовать с нативными браузерными календарями.
Минимальная конфигурация не требует сборщиков или npm. Достаточно подключить файл библиотеки и, при необходимости, Moment.js (в старых версиях зависимость используется для форматирования дат).
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pikaday/css/pikaday.css">
<script src="https://cdn.jsdelivr.net/npm/pikaday/pikaday.js"></script>
После подключения становится доступен глобальный конструктор
Pikaday.
Создание экземпляра привязывает календарь к конкретному input:
<script>
const picker = new Pikaday({
field: document.getElementById('datepicker')
});
</script>
Минимальная конфигурация включает только обязательный параметр
field, который указывает DOM-элемент.
При инициализации без дополнительных опций библиотека обеспечивает следующий набор поведения:
Выбранное значение записывается в input как строка, представляющая дату.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Pikaday minimal</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pikaday/css/pikaday.css">
</head>
<body>
<input type="text" id="datepicker">
<script src="https://cdn.jsdelivr.net/npm/pikaday/pikaday.js"></script>
<script>
const picker = new Pikaday({
field: document.getElementById('datepicker')
});
</script>
</body>
</html>
Минимальная схема взаимодействия строится вокруг одного объекта:
focus,
click)Таким образом, отсутствует необходимость вручную управлять состоянием календаря.
Без дополнительных настроек дата может выводиться в стандартном
формате JavaScript Date.toString(), что не всегда удобно
для интерфейсов. Это поведение обычно переопределяется позже через
format.
По умолчанию используется английская локализация. Названия месяцев и дней недели могут отличаться от ожидаемых в русскоязычных интерфейсах.
Переменная picker хранит экземпляр календаря и позволяет
взаимодействовать с ним программно:
picker.setDate('2026-06-01');
picker.getDate();
picker.destroy();
<input type="date" id="datepicker">
Конфликтует с Pikaday, так как браузер может перехватывать управление полем, что приводит к двойным интерфейсам или некорректному отображению.
Без стилей календарь остаётся функциональным, но теряет визуальную структуру:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pikaday/css/pikaday.css">
new Pikaday({
field: document.getElementById('datepicker')
});
Если скрипт выполняется до появления элемента, field
будет null, и календарь не привяжется. Обычно это решается
размещением скрипта внизу страницы или использованием
DOMContentLoaded.
Даже самый простой пример можно разложить на логические слои:
Такой подход сохраняется и в более сложных конфигурациях, где добавляются ограничения дат, кастомные форматы и внешние состояния.