- PVSM.RU - https://www.pvsm.ru -
В процессе работы над корпоративным проектом нередко приходится переключаться на задачи разработки пользовательского интерфейса. Конечно, для реализации фронт-энда мы уже давно не изобретаем велосипеды, а используем готовые компоненты. Казалось бы, на все случаи жизни уже есть свой плагин, но недавно я с удивлением обнаружил, что для поля выбора даты существует огромное количество реализаций элементов-календарей, а вот поле выбора времени как-то обходится стороной.
Не знаю, то ли я плохо искал (на plugins.jqueri.com есть только один подобный — KitKatClock, но он несколько «недоработан»), то ли искать не хотел, то ли и в правду до такого элемента никому дела нет. В общем, поскольку часть интерфейса, которую я разрабатывал, была ориентирована на заполнение полей пальцем (целевая аудитория устройств — инфокиоски) или, реже, мышкой, а полей для ввода времени было предостаточно, я решил родить еще один никому не нужный jquery-плагин.
Итак. Постановка ТЗ.
Подключение элемента почти тривиально:
<link rel="stylesheet" href="clock-ui.css" type="text/css"/>
<script language="javascript" src="clock-ui.min.js"></script>
Правда, есть одно но. Элемент использует изображения. И эти изображения могут располагаться у вас совсем в других местах. Изображения же прописаны в стилях. То есть используя такой элемент на своем сайте, вы должны поместить картинки куда надо, а затем внести соответствующие изменения в стили.
Активация элемента еще проще:
$('input.time').timePicker();
Здесь мы связываем все текстовые поля, имеющие класс time, с нашим элементом. Причем допустимы повторные вызовы.
Можно вызывать для полей, связанных с календарем, при условии, что первым инициализируется календарь. Чтобы timePicker смог вставлять значение времени в такие совмещенные поля, необходимо у datePicker задать в опции dateFormat (и/или в altFormat) символ 'T' отделенный хотя бы одним пробелом:
$('.date')
.datepicker({dateFormat: 'dd.mm.yy T'})
.timePicker();
Если у календаря существует altField и altFormat и также содержит 'T', время будет устанавливаться и в нем.
Элемент timePicker поддерживает инициализацию с опциями. Опций не так много, но они есть.
$('.time').timePicker({
compatible: !(Modernizr.backgroundsize && Modernizr.borderradius)
});
$('.time').timePicker({
defaultHour: 0, defaultMinute: 0, PM: true
});
Существует два способа получить значение времени, выбранного в поле.
Первый: непосредственно считать value поля. В нашем проекте такие поля идут как строки и анализируются на стороне сервера, поэтому такое решение нас вполне устраивает.
Второй: можно прочитать время в «сыром» формате, например, так:
var hours = $('#element').data().hours,
minutes = $('#element').data().minutes,
pm = $('#element').data().pm_time;
Наконец, если вам необходимо получить время в unix-формате (в секундах от начала cуток), используйте:
$('#element').date().time;
$('#element').datepicker('getDate')
Но к сожалению, повлиять на дату элемента datePicker через getDate/setDate не удалось. Календарь, когда был скрыт, упорно возвращал текущую дату, а не выбранную ранее в поле.
Желающим протестировать работу элемента добро пожаловать [2].
Проект, как повелось, на гитхабе [3].
Автор: KaminskyIlya
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/jquery/75355
Ссылки в тексте:
[1] Вот этот файл.: https://github.com/KaminskyIlya/timePicker/blob/master/src/clock.xar?raw=true
[2] добро пожаловать: http://jobject.tmweb.ru/timepicker/
[3] гитхабе: https://github.com/KaminskyIlya/timePicker
[4] Источник: http://habrahabr.ru/post/244057/
Нажмите здесь для печати.