Описание
Легкий (~20kb минифицированный js файл и ~5.5kb gziped) кроссбраузерный календарь, написан с использованиемes5иcss flexbox. Работает во всех современных браузерах:
IE 10+, Chrome, Firefox, Safari 8+, Opera 17+.
In EnglishЛегкий (~20kb минифицированный js файл и ~5.5kb gziped) кроссбраузерный календарь, написан с использованиемes5иcss flexbox. Работает во всех современных браузерах:
IE 10+, Chrome, Firefox, Safari 8+, Opera 17+.
bower i --save air-datepickerЛибо можно скачать файлы напрямую с GitHub
Подключите стили и скрипты из папки/dist:
<html>
<head>
<link href="dist/css/datepicker.min.css" rel="stylesheet" type="text/css">
<script src="dist/js/datepicker.min.js"></script>
</head>
</html>Календарь автоматически проинициализируется на элементах с классом.datepicker-here, при этом опции можно передать черезdataатрибуты.
<input type='text' class="datepicker-here" data-position="right top" />// Инициализация
$('#my-element').datepicker([options])
// Доступ к экземпляру объекта
$('#my-element').data('datepicker')
<input type='text' class='datepicker-here' />
Передайте параметр{multipleDates: true}для выбора нескольких дат. Если требуется ограничить количество выбранных дат, то передайте необходимое число{multipleDates: 3}.
<input type="text"
class="datepicker-here"
data-multiple-dates="3"
data-multiple-dates-separator=", "
data-position='right top'/>
Проинициализируйте плагин на элементе, который не является текстовым полем, например на<div> … </div>, либо передайте параметр{inline: true}.
<div class="datepicker-here"></div>
<input type="text"
class="datepicker-here"
data-min-view="months"
data-view="months"
data-date-format="MM yyyy" />
Чтобы ограничить выбор даты, используйтеminDateиmaxDate, которым нужно передать объект даты.
$('#minMaxExample').datepicker({
minDate: new Date() // Можно выбрать тольо даты, идущие за сегодняшним днем
})
По умолчанию в плагине нет встроенного механизма выбора диапозона дат для нескольких текстовых полей. Тем не менее это можно сделть вручную.
var $start = $('#start'),
$end = $('#end');
$start.datepicker({
onSelect: function (fd, date) {
$end.data('datepicker')
.update('minDate', date)
}
})
$end.datepicker({
onSelect: function (fd, date) {
$start.data('datepicker')
.update('maxDate', date)
}
})
Вы можете добавить свою локализацию в объектDatepicker.language["my-lang"]и при вызове календаря передать название языка в параметрlanguage
Datepicker.language['my-lang'] = {...}
$('.my-datepicker').datepicker({
language: 'my-lang'
})
Также объект локализации можно передавать непосредственно вlanguage
$('.my-datepicker').datepicker({
language: {
days: [...]
...
}
})
Если в вашей локализации не будет хватать каких-то полей, то они будут взяты из языка по умолчанию.
Datepicker.language['ru'] = {
days: ['Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота'],
daysShort: ['Вос','Пон','Вто','Сре','Чет','Пят','Суб'],
daysMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
months: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
monthsShort: ['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек'],
today: 'Сегодня',
clear: 'Очистить',
dateFormat: 'dd.mm.yyyy',
firstDay: 1
};
Типboolean
Defaultsfalse
Если true, то календарь будет виден постоянно.
Типstring|object
Defaults"ru"
Язык календаря. Если передается строка, то поиск языка будет осуществляться в объектеDatepicker.languageЕсли передан объект, то данные будут браться из него.
Если в объекте локализации не будет хватать каких то полей, то они будут взяты из языка по умолчанию.
ТипDate
Defaultsnew Date()
Какую дату нужно показывать при инициализации календаря.
Типnumber
Defaults""
Индекс дня, с которого начинается неделя. Возможные значение от 0 до 6, где 0 - воскресенье и 6 - суббота. По умолчанию берется из локализации, если значение передать сюда, то оно будет иметь больший приоритет.
Типarray
Defaults[6, 0]
Массив индексов дней, которые будут считаться выходными днями. Им будет добавлен класс.-weekend-. По умолчанию это суббота и воскресенье.
Типstring
Defaults""
Формат даты, кобминация из d, m, yyyy, D, M, и т.д. По умолчанию берется из локализации, если передать значение сюда, то оно будет иметь больший приоритет.
Типboolean
Defaultstrue
Если true, то клик на выделенной дате снимет выделение.
Типstring
Defaults"bottom left"
Позиционирование календаря отностиельно текстового поля. Первым значением задается основная ось позиционирования,
воторым - положение на этой оси. Например{position: "right top"}- утсановит позицию клаендаря справа вверху от текстового поля.
Типnumber
Defaults12
Отступ от основной оси позиционирования.
Типstring
Defaults"days"
Начальный вид календаря. Возможноые значения:
days- отображение дней месяцаmonths- отображение месяцев одного годаyears- отображение годов одной декадыТипstring
Defaults"days"
Минимальное представление календаря, по наступлению которого, выбор ячейки приведет к ее активации, а не переходу к следующему виду.
Возможные значения такие же как и у параметраview.
Типboolean
Defaultstrue
Если true, то будут отображаться дни других месяцев.
Типboolean
Defaultstrue
Если true, то можно будет выбрать дни из других месяцев.
Типboolean
Defaultstrue
Если true, то при выборе дней из других месяца, будет осуществялться переход к этому месяцу.
Типboolean
Defaultstrue
Если true, то при отображении декады, будут показаны годы из других декад.
Типboolean
Defaultstrue
Если true, то можно будет выбрать года из других декад
Типboolean
Defaultstrue
Если true, то при выборе года из другой декады, будет осуществлен переход к этой декаде.
ТипDate
Defaults""
Минимальная дата для возможности выбора. Все даты, идущее до нее нельзя будет активировать.
ТипDate
Defaults""
Максимальная дата для возможности выбора. Все даты, идущее после нее нельзя будет выбрать.
Типboolean
Defaultstrue
Если true, то при наступлении даты, которая была бы меньше минимально возможной или больше максимально возможной, деактвировались бы кнопки навигации 'вперед', 'назад'
Типboolean|number
Defaultsfalse
Если true, то можно будет выбрать неограниченное количество дат. Если передать число, то количество выбираемых дат будет ограниченно этим числом.
Типstring
Defaults","
Разделитель дат, который будет вставлен между датами при объеденения нескольких дат в одну строку.
Типboolean
Defaultsfalse
Если true, то будет отображена кнопка "Сегодня".
Типboolean
Defaultsfalse
Если true, то будет отображена кнопка "Очистить".
Типstring
Defaults"focus"
Тип события, по наступлению которого будет показан календарь.
Типboolean
Defaultsfalse
Если true, то при активации даты, календарь закроется.
Типstring
Defaults<svg><path d="M 17,12 l -5,5 l 5,5"></path></svg>
Контент кнопки 'предыдущий месяц|год|декада'.
Типstring
Defaults<svg><path d="M 14,12 l 5,5 l -5,5"></path></svg>
Контент кнопки 'следующий месяц|год|декада'.
Типobject
Defaults
navTitles = {
days: 'MM, <i>yyyy</i>',
months: 'yyyy',
years: 'yyyy1 - yyyy2'
};Значение заголовка календаря в зависимости от текущего вида, можно использовать те же обозночения что и вdateFormat. Недостающие поля будут взяты из значения по умолчанию. Также можно использовать html теги.
$('#my-datepicker').datepicker({
navTitles: {
days: '<h3>Выберете дату заезда</h3> MM, yyyy'
}
})Типstring
Defaults"monthsShort"
Какое поле из объекта локализации использовать в качестве названий месяцев, когда каледнарь отображает год.
Типfunction
Defaultsnull
Функция обратного вызова при выборе даты.
Dateвыбранной даты, если{multipleDates: true}, то будет передан массив таких объектов.Типfunction
Defaultsnull
Функция обратного вызова при изменении месяца.
Типfunction
Defaultsnull
Функция обратного вызова при изменении года.
Типfunction
Defaultsnull
Функция обратного вызова при изменении декады.
Типfunction
Defaultsnull
Функция обратного вызова при изменении вида календаря
Типfunction
Defaultsnull
Функция обратного вызова при отрисовке ячейки календаря.
Функция должна возвращать объект, которой может состоять из трех полей:
{
html: '', // Кастомный контент ячейки
classes: '', // Дополнительные классы для ячейки
disabled: '' // true/false, если true, то ячейку нельзя будет выбрать
}$('#my-datepicker').datepicker({
// Передаем функцию, которая добавляет 11 числу каждого месяца класс 'my-class'
// и делает их невозможными к выбору.
onRenderCell: function(date, cellType) {
if (cellType == 'day' && date.getDate() == 11) {
return {
classes: 'my-class',
disabled: true
}
}
}
})
Досутп к экземпляру плагина осуществляется черезdataатрибут.
var myDatepicker = $('#my-elem').datepicker().data('datepicker');
myDatepicker.show();
Показывает календарь.
Скрывает календарь.
Переходит на следующий месяц если вид days, на следующий год если months, и следующую декаду если years.
Переходит на предыдщуий месяц если вид days, на предыдущий год если months, и предыдущую декаду если years.
Date()Выбирает переданную дату. Если{multipleDates: false}и уже есть активная дата, то она будет деактивирована. Если{multipleDates: true}то будет добавлена еще одна активная дата.
Date()Снимает выделение с переданной даты.
Убирает выделение со всех активных дат.
Обновление опций календаря, после вызова метода он автоматически перерисуется. Можно обновлять сразу же несколько параметров, для этого нужно передать объект с требуемыми полями.
var datepicker = $('#my-elem').datepicker().data('datepicker');
// Обновление одного параметра
datepicker.update('minDate', new Date())
// Обновление нескольких параметров
datepicker.update({
position: "top right",
maxDate: new Date(),
todayButton: true
})
Устанавливает новое представление для календаря.
datepicker.view = 'months';
Устанавливает новую отображаемую дату, нужно передать JavaScriptDate()
datepicker.date = new Date();