Краткое руководство: добавление элемента управления TimePicker (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. В случае разработки приложений для Windows 10 см. раздел последняя документация]
Если вы хотите разрешить пользователям выбирать время в приложении, чтобы, например, запланировать собрание или установить напоминание, можно использовать элемент TimePicker, который входит в библиотеку Windows для JavaScript. TimePicker отображает три элемента управления: один для часов, второй для минут, а третий для выбора времени до или после полудня (AM или PM). Эти элементы управления легко использовать с поддержкой сенсорного ввода. Их параметры и стиль можно настраивать различными способами. (Только для Windows)
Цель: Демонстрация добавления элемента TimePicker.
Необходимые условия
Предполагается, что вы умеете создавать простые приложения Магазина Windows на JavaScript. Рекомендации по созданию первого приложения см. в разделе Создание первого приложения Магазина Windows на JavaScript.
Время для завершения: 15 мин.
Инструкции
1. Создание простого элемента TimePicker
Как и большинство элементов управления WinJS, элемент управления TimePicker можно создать декларативно (как атрибут data-win-control элемента <div>) или императивно (как объект в блоке кода JavaScript). Чтобы элемент управления отобразился, необходимо вызвать метод WinJS.UI.processAll. Если вы используете шаблоны проектов Visual Studio для приложений Магазина Windows на JavaScript, реализацию этой функции вы можете найти в обработчике активированных событий.
Декларативное создание элемента TimePicker:
<!DOCTYPE html>
<html>
<head>
<title>TimePicker Control Example</title>
<link href="//Microsoft.WinJS.2.0/css/ui-dark.css" rel="stylesheet">
<script src="//Microsoft.WinJS.2.0/js/base.js"></script>
<script src="//Microsoft.WinJS.2.0/js/ui.js"></script>
<body>
<section>
<h1> TimePicker Example</h1>
<h3>Add a TimePicker Declaratively</h3>
<div id="time" data-win-control="WinJS.UI.TimePicker"></div>
<script type="text/javascript">
WinJS.UI.processAll(document.getElementById("time"));
</script>
</section>
</body>
</html>
Для императивного создания элемента TimePicker (в коде) выполните следующее:
<!DOCTYPE html>
<html>
<head>
<title>TimePicker Control Example</title>
<link href="//Microsoft.WinJS.2.0/css/ui-dark.css" rel="stylesheet">
<script src="//Microsoft.WinJS.2.0/js/base.js"></script>
<script src="//Microsoft.WinJS.2.0/js/ui.js"></script>
<body>
<section>
<h1> TimePicker Example</h1>
<h3>Add a TimePicker Imperatively</h3>
<div id="time" ></div>
<script type="text/javascript">
var timeDiv = document.getElementById("time");
var timePicker = new WinJS.UI.TimePicker(timeDiv);
</script>
</section>
</body>
</html>
Когда вы создадите и запустите решение, то увидите три элемента управления, отображающие текущее время: один для часов, второй для минут и третий для выбора времени до или после полудня (AM или PM).
Здесь представлен внешний вид элемента управления TimePicker при использовании файла ui-dark.css.
Здесь представлен внешний вид элемента управления TimePicker при использовании файла ui-light.css.
2. Изменение времени по умолчанию
Время по умолчанию можно установить одним из следующих способов.
Декларативно
<div data-win-control="WinJS.UI.TimePicker" data-win-options="{current='11:00:00'}"></div>
Императивно
// "time" is the ID of the <div> element
var timeDiv = document.getElementById("time");
var timePicker = new WinJS.UI.TimePicker(timeDiv, {current:'11:00:00'});
Строку времени можно форматировать любыми способами, которые допускает объект JavaScript Date, кроме значений времени в формате UTC. Вот несколько примеров:
- 03:20 pm
- 15:20:00
3. Указание инкремента для минут
Можно изменить способ отображения минут в объекте TimePicker с помощью установки свойства minuteIncrement. Например, следующий код обновляет отображение времени с пятиминутным интервалом.
<div data-win-control="WinJS.UI.TimePicker" data-win-options="{minuteIncrement:5}"></div>
4. Изменение способа отображения часов и минут
Можно изменить шаблон представления часов и минут. По умолчанию элемент TimePicker отображает часы и минуты двухзначными числами, а указатель AM/PM — в языковом стандарте США. Это можно изменить следующими способами.
Изменение способа отображения минут:
var timePicker = WinJS.UI.TimePicker(timeDiv);
//does not display leading zeros
timePicker.minutePattern = "{minute.integer(1)}";
Изменение способа отображения часов:
var timePicker = WinJS.UI.TimePicker(timeDiv);
//does not display leading zeros
timePicker.hourPattern = "{hour.integer(1)}";
Выбор между 12-часовым и 24-часовым форматом времени:
var timePicker = WinJS.UI.TimePicker(timeDiv);
//displays a 24-hour clock
timePicker.clock = "24HourClock";
//displays a 12-hour clock, plus "AM" or "PM"
timePicker.clock = "12HourClock";
В следующем списке приведены возможные значения для шаблонов, которые вы можете использовать в TimePicker:
- {minute.integer} | {minute.integer(n)}
- {hour.integer} | {hour.integer(n)}
5. Отключение элемента TimePicker
Чтобы отключить элемент TimePicker, нужно присвоить его свойству disabled значение true. В результате элемент управления будет отображаться, но не будет доступен пользователю.
var timePicker = new WinJS.UI.TimePicker(timeDiv);
timePicker.disabled = true;
6. Реакция на событие изменения
Чтобы изменять поведение в вашем приложении, вы можете использовать событие change:
timePicker.onchange = hourChangeHandler;
function hourChangeHandler(event) {
// Insert code here.
}
7. Изменение оформления элемента TimePicker
В основном менять внешний вид элемента управления TimePicker можно с помощью стилей CSS
<style id="text/css">
[class="win-timepicker"] {background-color:LightBlue; }
</style>
и описывая раскрывающееся меню TimePicker посредством следующих классов CSS:
- win-timepicker
- win-timepicker-hour
- win-timepicker-minute
- win-timepicker-ampm
Например, можно изменять цвет границы раскрывающегося меню с часами:
.win-timepicker-hour
{
border: 3px solid rgb(28, 160, 218);
}
Эта команда сделает границу раскрывающегося меню с часами синей.
Вы можете менять цвет границы раскрывающегося меню времени суток (AM/PM):
.win-timepicker-period
{
border: 3px solid rgb(28, 160, 218);;
}
Эта команда сделает границу раскрывающегося меню времени суток синей.
Можно указать все три раскрывающихся меню элемента TimePicker с помощью приставки (^=) селектора атрибута CSS, которая находит все атрибуты с именами, начинающимися с указанной строки:
[class^="win-timepicker"] { color:red; }
8. Отображение и скрытие элементов управления
Вы можете указать, следует ли отображать элемент, присвоив его атрибуту display значение none:
.win-timepicker-minute { display:none; }
Если вы хотите скрыть элемент только в одном экземпляре TimePicker, необходимо сослаться на него, указав ID соответствующего элемента <div>. Например, чтобы скрыть минуты только в TimePicker, отображаемом в элементе <div> с ID "time", выполните следующее:
#time *.win-timepicker-minute { display: none; }
9. Вертикальное отображение элементов TimePicker
Чтобы часы, минуты и указатель половины суток (AM/PM) отображались вертикально, а не горизонтально, нужно установить атрибут CSS display этих элементов. Нужно также присвоить атрибуту display значение block в самом элементе DIV.
#time {display:block;}
*[class^="win-timepicker"] { display: block; }
Можно задать условия для вертикального отображения — например если ширина экрана меньше заданного предела. Следующий запрос CSS носителя задает вертикальное отображение элементов для ширины экрана менее 320 пикселей.
@media all and (max-width:320px) {
#time {display:block;}
*[class^="win-timepicker"] { display: block; }
}
10. Использование псевдоклассов для стилизации элемента TimePicker
Элемент timePicker поддерживает следующие псевдоклассы, которые можно использовать в качестве селекторов для отображения конкретных стилей, когда элемент TimePicker находится в определенных состояниях.
win-timepicker:hover. Пользователь наводит указатель мыши на средство выбора, но не активирует его щелчком. Здесь указатель мыши наведен на раскрывающееся меню с часами.
win-timepicker:active. Средство выбора становится активным после того, как пользователь нажимает элемент управления для открытия раскрывающегося меню, но до того, как он выберет этот параметр.
win-timepicker:focus. Средство выбора выделено для ввода с клавиатуры.
win-timepicker:disabled. Средство выбора не может разрешить взаимодействие с пользователем. Для этого псевдокласса свойству disabled средства выбора должно быть присвоено значение true.
Сводка
В этом разделе вы научились создавать элемент TimePicker.