Метод gotoDate

Метод gotoDate библиотеки Pikaday предназначен для программного перемещения календаря к определённой дате без её выбора. Это особенно полезно, когда необходимо отобразить пользователю календарь с предварительно установленным фокусом на конкретной дате, не меняя значение поля ввода.


Синтаксис

pikaday.gotoDate(date);

Параметры:

  • date — объект типа Date, к которому должен переместиться календарь.

Основные особенности

  1. Не изменяет выбранную дату Метод лишь перемещает визуальный фокус календаря. Выбранная дата (getDate()) остаётся без изменений, если не используется вместе с setDate().

  2. Работает с объектами Date В качестве аргумента обязательно передаётся корректный объект Date. Передача строки, числа или null приведёт к ошибке или некорректному поведению.

  3. Влияние на интерфейс После вызова gotoDate календарь отображает месяц и год указанной даты, а активный день подсвечен только в случае, если он совпадает с текущей выбранной датой.

  4. Совместимость с ограничениями Если дата выходит за пределы minDate или maxDate, календарь отобразит ближайшую допустимую дату. Например, если minDate — 1 января 2024, а gotoDate передан 1 января 2023, календарь откроется на 1 января 2024.


Примеры использования

Перемещение к сегодняшней дате без выбора:

var picker = new Pikaday({ field: document.getElementById('datepicker') });
picker.gotoDate(new Date());

В этом примере календарь откроется на текущем дне, но поле ввода останется пустым до ручного выбора даты.


Перемещение к дате в прошлом месяце:

var pastDate = new Date();
pastDate.setMonth(pastDate.getMonth() - 1);
picker.gotoDate(pastDate);

Календарь автоматически сместится на предыдущий месяц, подсветив текущий выбранный день (если он задан).


Использование вместе с setDate() для выбора даты:

var specificDate = new Date(2024, 11, 25); // 25 декабря 2024
picker.setDate(specificDate, true);        // задаёт и выбирает дату
picker.gotoDate(specificDate);             // дополнительно центрирует календарь

Хотя setDate() автоматически открывает нужный месяц, вызов gotoDate() может использоваться для обновления вида календаря после изменения дат программно.


Практические сценарии применения

  • Предварительная навигация: при открытии формы с календарём можно перемещать календарь к дате, связанной с другим полем (например, минимальная дата бронирования).
  • Кастомные кнопки управления: стрелки «вперед/назад» для перемещения по датам без выбора.
  • Интеграция с динамическими данными: при загрузке информации из базы данных можно перемещать календарь к дате события без изменения пользовательского ввода.

Важные нюансы

  • Метод не инициирует событие onSelect, так как не выбирает дату. Для реакций на перемещение следует использовать другие события, такие как onDraw.
  • Не рекомендуется передавать неинициализированные или некорректные объекты Date, так как это может привести к визуальным сбоям календаря.
  • В сочетании с minDate и maxDate метод корректирует отображаемую дату автоматически, что позволяет безопасно ограничивать навигацию пользователя.

Метод gotoDate является мощным инструментом для программного управления отображением календаря, предоставляя полную гибкость без вмешательства в фактическое выбранное значение поля.