Нет стандартного события для нажатия кнопки «Сегодня».Однако, взглянув на код jquery.ui.datepicker.js, выясняется, что он вызывает $.datepicker._gotoToday
.Я предполагаю, что к customizeTodayButton
вы пытаетесь изменить поведение того, что он делает в настоящее время (не внешний вид, внешний вид будет сделан со стилем)Чтобы изменить существующее поведение, хорошо знать, что он делает сейчас.Итак, помните, что это текущий код используемой функции:
/* Action for current link. */
_gotoToday: function(id) {
var target = $(id);
var inst = this._getInst(target[0]);
if (this._get(inst, 'gotoCurrent') && inst.currentDay) {
inst.selectedDay = inst.currentDay;
inst.drawMonth = inst.selectedMonth = inst.currentMonth;
inst.drawYear = inst.selectedYear = inst.currentYear;
}
else {
var date = new Date();
inst.selectedDay = date.getDate();
inst.drawMonth = inst.selectedMonth = date.getMonth();
inst.drawYear = inst.selectedYear = date.getFullYear();
}
this._notifyChange(inst);
this._adjustDate(target);
},
Чтобы переопределить эту функцию своей собственной функциональностью, вам нужно обновить код до чего-то вроде этого:
Site.Calendar = function() {
//override the existing _goToToday functionality
$.datepicker._gotoTodayOriginal = $.datepicker._gotoToday;
$.datepicker._gotoToday = function(id) {
// now, call the original handler
$.datepicker._gotoTodayOriginal.apply(this, [id]);
// invoke selectDate to select the current date and close datepicker.
$.datepicker._selectDate.apply(this, [id]);
};
// Set default setting for all calendars
jQuery.datepicker.setDefaults({
showOn: 'both',
buttonImageOnly: true,
buttonText: '',
changeMonth: true,
changeYear: true,
showOtherMonths: true,
selectOtherMonths: true,
showButtonPanel: true,
dateFormat: "D, d M, yy",
showAnim: "slideDown"
});
};
Также, вот рабочая jsFiddle того, что вы ищете.