JQuery

’tag’

Исправляем работу кнопки "Сегодня" в календаре JQuery UI Datepicker

Июнь 18, 2012

Недавно нужно было доработать календарь JQuery UI Datepicker. В настройках Datepicker можно задать показ кнопки "Сегодня" в левой нижней части календаря. Однако, при нажатии на кнопку происходит обычный возврат к сегодняшней дате, но не ее выбор. Если пользователь перемещается между месяцами, то кнопка быстро возвращает его к текущей дате.

Как и пользователи я понимаю кнопку "Сегодня", как выбор даты текущего дня с одновременным закрытием календаря.

В ходе очередных поисков по Интернету я пришел к следующему решению. После включения файла JQuery UI:

<script language="javascript" type="text/javascript" src="js/jquery.ui.datepicker-ru.js"></script>

необходимо добавить следующий код, чтобы переопределить функцию _gotoToday:

<script type="text/javascript">
$(function () {
	var _gotoToday = $.datepicker._gotoToday;
	$.datepicker._gotoToday = function( id ) {
		var target = $( id ),
			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._selectDate( id, this._formatDate( inst, inst.selectedDay, inst.drawMonth, inst.drawYear ) );
	}
});
</script>

Решения, которые я видел в Интернете работают, но в самом лучшем варианте после закрытия календаря курсор остается в поле для ввода, что меня не устраивало. В моем варианте я это исправил.

Tags: , , , , ,
Записано в JavaScript    |    Постоянная ссылка