jQuery UI Datepicker: переопределение поведения кнопки «Сегодня»

Использование кнопки «Сегодня» для выбора текущей даты в элементе управления jQuery UI Datepicker.


Кнопка «Сегодня» отображает месяц с текущей датой. На мой взгляд, более логичным поведением для этой кнопки — это не отображать месяц, а сразу выбирать текущую дату.
Для переопределения поведения кнопки можно переопределить метод перехода к текущей дате:

$('#mydatepicker').datepicker({ 
   'showButtonPanel': true
});

$.datepicker._gotoToday = function (id) {
   $(id)
       .blur()
       .datepicker("hide")
       .datepicker('setDate', new Date());
}

В функции $.datepicker._gotoToday вызовы функций должны идти именно в такой последовательности: убираем фокус с элемента, закрываем календарь, устанавливаем дату. Если изменить порядок, то в IE8 возможно повторное самопроизвольное открывание календаря.

Для большего удобства можно отобразить на кнопке «Сегодня» текущую дату:

$('#mydatepicker').datepicker({ 
   'showButtonPanel': true,
   'currentText': (function () {
       var d = new Date();
       var dd = d.getDate();
       var mm = d.getMonth() + 1;
       return ['Сегодня: ', (dd < 10 ? '0' : ''), dd, '.', (mm < 10 ? '0' : ''), mm, '.', d.getFullYear()].join('');
   })()
});

About the author

Добавить комментарий

Сказать спасибо

Способ платежа:

Подписаться на обновления

Укажите свой e-mail чтобы получать уведомления о новых статьях.

Присоединиться к еще 1 подписчику