На главную Напишите нам! Напишите нам!
14-11-2012
колонтитул в word 2007, 0000002111

jQuery UI. Widgets. Datepicker (Календарь)

Сразу оговорюсь, цикл этих статей не рассчитан на матерых профи, она является всего лишь толчком к развитию, этаким небольшим экскурсом по возможностям для новичков, для тех кто не имеет понятия о UI и jQuery в целом.
Скачиваем: Download
Подключаем фреймворк, локализацию для календаря и таблицу стилей:

<link type="text/css" href="css/ui-lightness/jquery-ui-1.7.2.custom.css" rel="stylesheet" />
<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="js/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>
<script src="js/i18n/jquery-ui-i18n.js" type="text/javascript"></script>

Итак, приготовления закончены. Чтобы создать календарь нужна всего лишь одна строка html:

<input id="datepicker" type="text" />

Либо если Вы хотите встроить календарь в сайт как элемент страницы:

<div id="datepicker"></div>

И пара строк js:

$(function(){
$.datepicker.setDefaults(
$.extend($.datepicker.regional["ru"])
;
$("#datepicker").datepicker();
});

И так мы получили вполне работающий календарь на русском, но вдруг мы делаем сайт на английском или украинском? Чтобы изменить ситуацию в нашу пользу надо всего лишь изменить один параметр, причем делать это можно динамически:

$('#datepicker').datepicker('option', $.datepicker.regional["uk"]));

Стандартного функционала "по умолчанию" не всегда хватает на выполнение тех или иных задач. Поэтому чуть-чуть подредактируем настройки:

$("#datepicker").datepicker({
minDate: "-30",         //Минимальная дата которую можно выбрать, т.е. -30 дней от "сейчас"
maxDate: "+1m +1w +3d"  //Максимальная дата которую можно выбрать, т.е. + 1 месяц, 1 неделя, и 3 дня от "сейчас"
});

Cобытия

$.datepicker.setDefaults($.extend(
$.datepicker.regional["ru"])
);
$("#datepicker").datepicker({
beforeShow: function(input) {
$(input).css("background-color","#ff9");
},
onSelect: function(dateText, inst) {
$(this).css("background-color","");
alert("Выбрано: " + dateText +
"\n\nid: " + inst.id +
"\nselectedDay: " + inst.selectedDay +
"\nselectedMonth: " + inst.selectedMonth +
"\nselectedYear: " + inst.selectedYear);
},
onClose: function(dateText, inst) {
$(this).css("background-color","");{
}
});

В листинге выше у нас получилось целых три опции, в которых есть коллбэки. beforeShow - это та функция, которая будет вызвана перед отображением календаря. С помощью css-опций она установит инпуту желтый фон. В onSelect определена функция, которая будет вызвана при выборе какой либо даты, она выведет выбранную дату в alert и передаст пустое значение css-опции, что вернет инпуту прежний вид. onClose функция которая сработает при закрытии календаря - т.е. вернет инпуту белый фон.

Mетоды

<a id="datepicker_open">Открыть в окне</a>

$.datepicker.setDefaults({changeYear: true}, $.extend($.datepicker.regional["ru"]));
$("#datepicker_open").click(function(){
$("#datepicker").datepicker(
"dialog",
"23.04.2009",
function(){
alert("Событие onSelect");
},
{ showButtonPanel: true }
);
});

В приведенном примере демонстрируют работу метода dialog. Мы вызываем этот метод при щелчке на ссылке. Первый аргумент – это название метода, второй аргумент textDate – дата на которой по умолчанию будет открываться календарь. В аргументе onSelect можно передать callback-функцию, которая будет вызвана при выборе конкретной даты в календаре. В аргументе settings можно передать объект с новыми настройками виджета, которые будут применены к календарю, который будет открыт в диалоговом окне.

Ну вот вроде бы и все... Пользуйтесь! А далее приведен список всех опций, методов и событий.

Опции:
  • altField - jQuery селектор для другого поля, которое должно быть обновлено, как только будет выбрана дата в Datepicker. Формат даты в этом дополнительном поле устанавливается с помощью опции altFormat.
  • altFormat - формат даты, который будет использоваться для опции altField. Эти настройки позволяют показывать пользователю один формат даты, тогда как для вычислений может использоваться другой формат. Полный список возможных форматов можно найти на http://docs.jquery.com/UI/Datepicker/formatDate
  • appendText - текст, который будет отображаться после каждого поля выбора даты. Можно использовать, например для того, чтобы пометить поле как обязательное для заполнения.
  • buttonImage - адрес картинки, которая будет отображаться на кнопке, с помощью которой можно вызывать календарь. Используется совместно с опцией showOn, когда та принимает значения 'button' или 'both'. Если был определен текст в опции buttonText, он становится значением атрибута alt картинки.
  • buttonImageOnly - если для этой опции установить значение true, то картинка, адрес которой определен в опции buttonImage, будет отображаться не на кнопке, а сама по себе.
  • buttonText - текст, отображающийся на кнопке, с помощью которой можно вызывать календарь. Используется совместно с опцией showOn, когда та принимает значения 'button' или 'both'.
  • changeMonth - если в этой опции передать значение true, будет возможно выбирать месяц из выпадающего списка.
  • changeYear - если в этой опции передать значение true, будет возможно выбирать год из выпадающего списка.
  • closeText - эта опция используется совместно с showButtonPanel, если последняя имеет значение true. Значение опции closeText определяется в файле локализации, если он используется, но это значение можно переопределить, явно указав его.
  • constrainInput - по умолчанию опция имеет значение true и принуждает строго соблюдать формат даты, определенный в опциях виджета, в текстовом поле ввода. Чтобы иметь возможность не соблюдать этот формат, следует установить опцию в false.
  • currentText - эта опция используется совместно с showButtonPanel, если последняя имеет значение true. Значение опция currentText определяется в файле локализации, если он используется, но это значение можно переопределить, явно указав его.
  • dateFormat - определяет формат даты. Значение опции dateFormat определяется в файле локализации, если он используется, но это значение можно переопределить, явно указав его. Полный список возможных форматов можно найти на http://docs.jquery.com/UI/Datepicker/formatDate
  • dayNames - массив, содержащий полные названия дней недели, начиная с воскресенья. Определяется в файле локализации, если он используется, но это значение можно переопределить, явно указав его.
  • dayNamesMin - массив, содержащий 2-хбуквенную аббревиатуру названия дней недели, начиная с воскресенья. Определяется в файле локализации, если он используется, но это значение можно переопределить, явно указав его.
  • dayNamesShort - массив, содержащий 3-хбуквенную аббревиатуру названия дней недели, начиная с воскресенья. Определяется в файле локализации, если он используется, но это значение можно переопределить, явно указав его.
  • defaultDate - устанавливает дату, которая будет подсвечена при первом открытии, если поле выбора даты пустое. Опция может быть определена через объект Date, либо как количество дней от текущего для (например +7 или -15), либо как строка значений, определяющих период ('y' для лет, 'm' для месяцев, 'w' для недель, 'd' для дней, например '+1m +7d'), и наконец как null для текущего дня.
  • duration - длительность эффекта анимации при открытии (закрытии) календаря. Может принимать значения в виде строки - 'fast', 'normal' (по умолчанию), 'slow' или в виде числа в миллисекундах. Если передать пустую строку, календарь будет открываться и закрываться без эффекта анимации.
  • firstDay - опция устанавливает первый день недели: воскресенье – 0, понедельник – 1,… Определяется в файле локализации, если он используется, но это значение можно переопределить, явно указав его.
  • gotoCurrent - если установить значение опции в true, то кнопка «Сегодня» (доступная при showButtonPanel: true) будет указывать на выбранную дату взамен текущей.
  • hideIfNoPrevNext - если Вы ограничиваете диапазон доступных дат с помощью опций minDate и maxDate, то при достижении края диапазона, стрелки «Назад» и «Вперед» становятся неактивными. Но их можно и совсем скрывать, передав в опции hideIfNoPrevNext значение true.
  • isRTL - для этой опции необходимо установить значение true, если используется язык с написанием справа налево. Определяется в файле локализации, если он используется.
  • maxDate - устанавливает максимальную возможную для выбора дату через объект Date или как число дней от текущего (например +7) или как строку значений определяющих период ('y' для лет, 'm' для месяцев, 'w' для недель, 'd' для дней, например '+1y +1m'), или null для отсутствия ограничения.
  • minDate - устанавливает минимальную возможную для выбора дату через объект Date или как число дней от текущего (например -7) или как строку значений определяющих период ('y' для лет, 'm' для месяцев, 'w' для недель, 'd' для дней, например '-1y -1m'), или null для отсутствия ограничения.
  • monthNames - массив, содержащий полные названия месяцев. Определяется в файле локализации, если он используется, но это значение можно переопределить, явно указав его.
  • monthNamesShort - массив, содержащий 3-хбуквенную аббревиатуру названия месяцев. Определяется в файле локализации, если он используется, но это значение можно переопределить, явно указав его.
  • navigationAsDateFormat - по умолчанию опция имеет значение false. Если установить значение true, функция dateFormat будет примерена к значениям опций nextText, prevText и currentText с тем, чтобы отображать при навигации, например предыдущее и следующее названия месяцев.
  • nextText - текст, который отображается в качестве ссылки на следующий месяц. Определяется в файле локализации, если он используется, но это значение можно переопределить, явно указав его. Если используется файл стилей ThemeRoller’а, это значение заменяется иконкой.
  • numberOfMonths - эта опция определяет, сколько месяцев сразу нужно показать. Значение опции может быть просто числом или массивом, состоящим из двух элементов, которые определяют соответственно количество строк и столбцов. Например, значение [2, 3] отобразит календарь в две строки по три месяца.
  • prevText - текст, который отображается в качестве ссылки на предыдущий месяц. Определяется в файле локализации, если он используется, но это значение можно переопределить, явно указав его. Если используется файл стилей ThemeRoller’а, это значение заменяется иконкой.
  • shortYearCutoff - значение по умолчанию +10. Эта опция используется только при условии использования в dateFormat двузначной записи года и выполняет роль компенсатора для определения века. Если значение передано в виде числа, используется как есть. Если значение передано в виде строки, конвертируется в число и добавляется к текущему значению года. После того как значение определено, все данные, выступающие в качестве значения года, и меньшие и равные ему считаются годами текущего века. Значения большие – считаются годами предыдущего века.
  • showAnim - определяет тип анимации при открывании календаря. По умолчанию имеет значение show (при закрывании будет использован hide). Без подключения дополнительных файлов могут быть использованы эффекты 'slideDown' и 'fadeIn' (при закрывании соответственно будут использоваться эффекты 'slideUp' и 'fadeOut'). Так же возможно использование любых эффектов jQuery UI Effects при условии их дополнительного подключения.
  • showButtonPanel - установка значения true для этой опции приведет к тому, что будет показана панель с двумя кнопками – переход к сегодняшней дате и закрытие календаря.
  • showCurrentAsPos - когда используется отображение сразу нескольких месяцев, число, переданное в этой опции, определяет позицию текущего месяца. По умолчанию используется значение 0, и текущий месяц отображается в верхнем левом углу.
  • showMonthAfterYear - по умолчанию используется значение false и в заголовке название месяца идет перед годом. При использовании значения true название месяца будет следовать за годом.
  • showOn - по умолчанию эта опция имеет значение 'focus', что заставляет календарь открываться при щелчке в поле ввода. Другие возможные значения - 'button' и 'both'. Рядом с полем ввода появится кнопка. В первом случае календарь будет открываться по щелчку на кнопке, а во втором случае как по щелчку на кнопке, таки при получении фокуса полем ввода.
  • showOptions - если Вы используете один из эффектов jQuery UI Effects, с помощью этой опции ему можно передать дополнительные настройки. Например: showOptions: {direction: 'up'}.
  • showOtherMonths - по умолчанию имеет значение false. Если использовать true, на календаре будут отображаться дни предыдущего и/или следующего месяца без возможности их выбора.
  • stepMonths - определяет насколько месяцев сдвигать календарь при щелчке по ссылкам Следующий и Предыдущий. По умолчанию – 1.
  • yearRange - управление диапазоном лет, отображаемых в выпадающем списке (при использовании опции changeYear).
События:
  • beforeShow - здесь можно определить функцию, которая будет вызываться перед открытием календаря. Функция принимает в качестве аргумента объект, характеризующий текстовое поле ввода с которым работает виджет.
  • beforeShowDay - в этой опции можно определить пользовательскую функцию, которая будет принимать в качестве аргумента выбранную дату. Функция должна возвратить массив, где элемент с индексом [0] – true или false показывает, возможен или нет выбор этой даты. Элемент с индексом [1] содержит имя класса (классов) для отображения даты. Элемент с индексом [2] (опционально) – текст всплывающей подсказки для даты. Функция будет вызываться для каждой даты в календаре в момент наведения указателя мыши.
  • onChangeMonthYear - здесь можно определить функцию, которая будет вызываться при смене месяца или года в календаре. Функция принимает три аргумента. Первые два аргумента – это новые значения года и месяца, третий аргумент – объект datepicker.
  • onClose - в этой опции определяется функция, которая будет вызвана, когда календарь был закрыт без выбора какой-либо даты.
  • onSelect - в этой опции определяется функция, которая будет вызвана, когда в календаре выбрана какая-либо дата.
Методы:
  • destroy - .datepicker('destroy') полностью удаляет всю функциональность виджета Datepicker. Возвращает элементы в состояние, предшествующее инициализации.
  • disable - .datepicker('disable') временно запрещает использование всей функциональности виджета. Вновь разрешить ее использование можно с помощью метода enable.
  • enable - .datepicker('enable') разрешает использование всей функциональности виджета, если ранее она была запрещена с использованием метода disable.
  • option - .datepicker('option', optionName, [value]) с помощью этого метода можно получить или установить значение любой опции виджета после инициализации.
  • dialog - .datepicker('dialog', dateText, [onSelect], [settings], [pos]) открывает виджет Datepicker в режиме диалогового окна. В аргументе dateText передается дата, на которой должен быть открыт календарь. Остальные аргументы необязательные. В аргументе onSelect можно передать функцию, которая будет вызвана в момент выбора даты в календаре, в аргументе settings можно передать объект с новыми настройками виджета, в аргументе pos – координаты, в которых будет открыто диалоговое окно. Здесь можно использовать события мыши, чтобы определить координаты.
  • isDisabled - .datepicker('isDisabled') метод возвращает значение true, если к виджету был применен метод disable и false в противном случае.
  • hide - .datepicker('hide', [speed]) скрывает ранее открытый календарь.
  • show - .datepicker('show') открывает календарь.
  • getDate - .datepicker('getDate') метод возвращает дату, выбранную в календаре.
  • setDate - .datepicker('setDate', date) метод позволяет установить дату в календаре. Значением аргумента date может быть строка (например: 25.10.1917)
колонтитулы в word 2007, 000000211111
Класс!
 
Яндекс.Метрика
Копирование возможно при указании прямой индексируемой гиперссылки
0000002