- Поле со списком | htmlbook.ru
- Тег HTML выпадающий список
- Синтаксис
- Примеры использования выпадающего списка <select> в HTML коде
- Простой HTML выпадающий список
- HTML код простого выпадающего списка
- Выпадающий список с выбором нескольких значений
- HTML код выпадающего списка с выбором нескольких значений
- Раскрывающийся список с группами пунктов
- HTML код раскрывающегося списка с группами пунктов
- HTML список обязательный для заполнения (выбора)
- HTML код выпадающего списка обязательного для выбора (заполнения)
- Поддержка браузерами
- Атрибуты тега select
- Текстовое поле со списком 2. Как это всё-таки сделано в MS Word
- Добавление поля со списком — InfoPath
- — HTML | MDN
- JavaScript контролы для выбора опций
- О правильном дизайне полей с выпадающими списками 📜⤵️
- 1. Анатомия выпадающего списка
- 2.1. Стандартный выпадающий список без текстового поля
- 2.2. Выпадающий список с текстовым полем (или текстовое поле со списком)
- 2.3. Раскрывающийся список с мультиселектом (множественным выбором)
- 2.4. Выпадающий список с группировкой элементов
- 2.5. Меню с возможностью выбора
- 2.6. Выбор даты
- 3.1. Стандартный стиль
- 3.2. Скругленные углы
- 3.3. Иконки
- 3.4. Иллюстрации
- 3.5. Material Design
- 4.1. Блокированный элемент
- 4.2. Наведение курсора
- 4.3. Подсветка и состояние фокуса
- 4.4. Выбранный пункт
- 4.5. Обратная связь для ошибочного ввода
- 5.1. Пустой заполнитель
- 5.2. Подсказка
- 5.3. Побуждающая фраза
- 5.4. Один из вариантов выбора
- 6.1. Если в списке меньше пяти вариантов
- 6.2. Если у вас две опции, используйте слайдер
- 6.3. Иногда легче печатать, чем выбирать
- 6.4. Если вариантов много
- Когда же нужно использовать раскрывающийся список?
- 7.1. Дефолтные списки
- 7.2. Использование оболочки
- HTML-тег выбора
- HTML DOM Выбрать объект
- HTML Combobox с JavaScript и CSS
- Пример комбинированного списка только для выбора | WAI-ARIA Authoring Practices 1.2
- Как установить значение по умолчанию для элемента HTML?
- Выпадающие списки со списком - приложения Win32
- HTML · GitHub
Поле со списком | htmlbook.ru
Поле со списком, называемое еще ниспадающее меню, один из гибких и удобных элементов формы. В зависимости от настроек, в списке можно выбирать одно или несколько значений. Преимущество списка в его компактности и универсальности, список может занимать одну или несколько строк, в нём можно выбирать одно или несколько значений. Поле со списком создается следующим образом.
<select атрибуты>
<option атрибуты>Пункт 1</option>
<option атрибуты>Пункт 2</option>
</select>
Тег <select> выступает контейнером для пунктов списка и определяет его вид, будет ли это раскрывающийся список или же список с одним или множественным выбором. Вид зависит от использования атрибута size тега <select>, который устанавливает высоту списка, ширина списка при этом определяется автоматически исходя из длины текста внутри <option>. Ниже представлен список множественного выбора, в котором пункты выделяются с помощью клавиши Ctrl и Shift и раскрывающийся список.
ЧебурашкаКрокодил ГенаШапоклякКрыса Лариса | ЧебурашкаКрокодил ГенаШапоклякКрыса Лариса |
Список множественного выбора | Раскрывающийся список |
Атрибуты тега <select>
Рассмотрим атрибуты тега <select>, с помощью которых можно изменять представление списка.
multiple
Наличие multiple сообщает браузеру отображать содержимое элемента <select> как список множественного выбора. Конечный вид списка зависит от используемого атрибута size. Если он отсутствует, то высота списка равна количеству пунктов, если значение size меньше числа пунктов, то появляется вертикальная полоса прокрутки.
ЧебурашкаКрокодил ГенаШапоклякКрыса Лариса | ЧебурашкаКрокодил ГенаШапоклякКрыса Лариса |
Атрибут size отсутствует | Атрибут size равен 2 |
Для выбора нескольких значений списка применяются клавиши Ctrl и Shift совместно с курсором мыши.
В примере 1 показано создание списка множественного выбора.
Пример 1. Список множественного выбора
HTML5IECrOpSaFx
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Список</title> </head> <body> <form> <p><select name="select" size="3" multiple> <option selected value="s1">Чебурашка</option> <option value="s2">Крокодил Гена</option> <option value="s3">Шапокляк</option> <option value="s4">Крыса Лариса</option> </select> <input type="submit" value="Отправить"></p> </form> </body> </html>
name
Определяет уникальное имя элемента <select>. Как правило, это имя используется для доступа к данным через скрипты или для получения выбранного значения серверным обработчиком.
size
Устанавливает высоту списка. Если значение size равно единице, то список превращается в раскрывающийся. Значение по умолчанию зависит от атрибута multiple. Если он присутствует, то размер списка равен числу элементов. Когда multiple нет, то значение атрибута size равно 1.
Атрибуты тега <OPTION>
Тег <option> также имеет атрибуты, влияющие на вид списка, они представлены далее.
selected
Делает текущий пункт списка выделенным. Если у тега <select> добавлен атрибут multiple, то можно выделять более одного пункта.
value
Определяет значение пункта списка, которое будет отправлено на сервер. На сервер отправляется пара «имя/значение», где имя задаётся атрибутом name тега <select>, а значение — атрибутом value выделенных пунктов списка. Значение может как совпадать с текстом пункта, так быть и самостоятельным.
label
Предназначен для указания метки пункта списка, сокращённой по сравнению с текстом внутри <option>. Если атрибут label присутствует, то текст внутри тега <option> игнорируется и в списке выводится значение label. Браузер Firefox не поддерживает этот атрибут.
Создание списка показано в примере 2.
Пример 2. Использование списка
HTML5IECrOpSaFx
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Список</title> </head> <body> <form> <p><strong>Выбери персонажа</strong></p> <p><select name="hero"> <option value="s1">Чебурашка</option> <option value="s2" selected>Крокодил Гена</option> <option value="s3">Шапокляк</option> <option value="s3" label="Лариса">Крыса Лариса</option> </select> <input type="submit" value="Отправить"></p> </form> </body> </html>
Группирование элементов списка
При достаточно обширном списке имеет смысл сгруппировать его элементы по блокам, чтобы обеспечить наглядность списка и удобство работы с ним. Для этой цели применяется тег <optgroup>. Он представляет собой контейнер, внутри которого располагаются теги <option> объединённые в одну группу. Особенностью тега <optgroup> является то, что он не выделяется как обычный элемент списка, акцентируется с помощью жирного начертания, а все элементы, входящие в этот контейнер, смещаются вправо от своего исходного положения. Для добавления заголовка группы используется атрибут label, как показано в примере 3.
Пример 3. Группирование элементов списка
HTML5IECrOpSaFx
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Список</title> </head> <body> <form> <p><select name="food"> <optgroup label="Русская кухня"> <option value="r1">Закуска Барская</option> <option value="r2">Раки, фаршированные по-царски</option> <option value="r3">Биточки в горшочке</option> </optgroup> <optgroup label="Украинская кухня"> <option value="u1">Галушки славянские</option> <option value="u2">Пампушки украинские</option> <option value="u3">Жаркое по-харьковски</option> </optgroup> </select></p> <p><input type="submit" value="Отправить"></p> </form> </body> </html>
Результат примера показан на рис. 1.
Рис. 1. Группированный список
Тег HTML выпадающий список
Тег <select> в HTML используется для создания выпадающего списка в HTML форме.
С помощью атрибута multiple можно создать список с выбором нескольких значений (список с множественным выбором).
Пункты выпадающего списка определяются с помощью тега <option>. Тег <optgroup> определяет группы пунктов внутри выпадающего списка HTML.
Выпадающий список в HTML является одним из элементов форм. Подробно о создании форм описано в статье: Все про формы и поля в HTML. Создание и работа с формами.
При отправке формы, на сервер будет отправлена переменная, в качестве названия имеющая имя списка select (значение атрибута name), содержащая значение выбранного пункта списка. Если в выбранном пункте списка <option> есть атрибут value, то значением считается его содержимое, в противном случае значением считается содержимое тега <option>.
Синтаксис
<select>элементы списка</select>
Примеры использования выпадающего списка <select> в HTML коде
Ниже представлены 4 основных варианта выпадающих списков HTML.
Простой HTML выпадающий список
СинийЗеленыйЖелтыйКрасныйОранжевыйЧерный
HTML код простого выпадающего списка
<select name="user_profile_color_1">
<option value="1">Синий</option>
<option value="2">Зеленый</option>
<option value="3">Желтый</option>
<option value="4">Красный</option>
<option value="5">Оранжевый</option>
<option value="6">Черный</option>
</select>
Выпадающий список с выбором нескольких значений
Добавить списку возможность множественного выбора (выбора одновременно нескольких значений) можно используя атрибут multiple. Количество одновременно выводимых на экран пунктов списка с множественным выбором регулируется с помощью атрибута size.
Атрибут name такого списка должен заканчиваться символами «[]», например, name=»cars[]».
NissanToyotaBMWWolksvagenSkodaMercedes-Benz
HTML код выпадающего списка с выбором нескольких значений
<select name="user_cars[]" multiple="multiple" size="4">
<option value="1">Nissan</option>
<option value="2">Toyota</option>
<option value="3">BMW</option>
<option value="4">Wolksvagen</option>
<option value="5">Skoda</option>
<option value="6">Mercedes-Benz</option>
</select>
Раскрывающийся список с группами пунктов
Пункты в HTML списке select можно группировать с помощью тега <optgroup>. Название группы не доступно для выбора, служит для удобства пользователей.
МоскваСанкт-ПетербургНовосибирскКиевХарьковЛьвовМинскБобруйскГомель
HTML код раскрывающегося списка с группами пунктов
<select name="user_city">
<optgroup label="Россия">
<option value="1">Москва</option>
<option value="2">Санкт-Петербург</option>
<option value="3">Новосибирск</option>
</optgroup>
<optgroup label="Украина">
<option value="4">Киев</option>
<option value="5">Харьков</option>
<option value="6">Львов</option>
</optgroup>
<optgroup label="Беларусь">
<option value="7">Минск</option>
<option value="8">Бобруйск</option>
<option value="9">Гомель</option>
</optgroup>
</select>
HTML список обязательный для заполнения (выбора)
Для того, чтобы создать список select, обязательный для заполнения (<select> список, где пользователь должен обязательно выбрать значение) нужно использовать атрибут required, а также добавить внутрь списка первым пунктом <option> с пустым значением атрибута value.
Выберите значениеСинийЗеленыйЖелтыйКрасныйОранжевыйЧерный
HTML код выпадающего списка обязательного для выбора (заполнения)
<select name="user_profile_color_2" required="required">
<option value="">Выберите значение</option>
<option value="1">Синий</option>
<option value="2">Зеленый</option>
<option value="3">Желтый</option>
<option value="4">Красный</option>
<option value="5">Оранжевый</option>
<option value="6">Черный</option>
</select>
Поддержка браузерами
Атрибуты тега select
Атрибут | Значения | Описание |
---|---|---|
autofocus | не указывается / autofocus |
Логический атрибут. Если указан, при загрузке документа фокус будет переведен на список. |
disabled | не указывается / disabled |
Логический атрибут. Если указан, делает список неактивным. Данные списка, отмеченного этим атрибутом, не будут переданы на сервер при отправке формы. Атрибут также отключает возможность изменения состояния списка пользователем (например, изменение выбранного пункта). |
form | id формы |
Указывает на форму, к которой относится список. Используется, если список <select> находится вне HTML кода формы. Если список находится внутри тега <form>, то использовать атрибут form не нужно, список по умолчанию привязан к форме, внутри которой находится. |
multiple | не указывается / multiple |
Логический атрибут. Открывает возможность множественного выбора. Если указан, вместо выпадающего списка будет выведен список с возможностью выбрать несколько значений (пунктов) одновременно. Количество элементов, доступных без скроллинга регулируется атрибутом size. |
name | текст |
Имя списка. Используется при передаче данных формы на сервер. Значение списка будет передано в переменной, имеющей имя, указанное в этом атрибуте. |
required | не указывается / required |
Логический атрибут. Если указан, список будет определен как обязательный для заполнения (обязательный для выбора). Форма не будет отправлена на сервер, если в таком списке не будет выбрано ни одно значение. Заполнение контролируется браузером. При попытке отправить форму с незаполненным обязательным списком браузеры обычно выводят на экран ошибку заполнения. |
size | число |
Количество пунктов списка, одновременно выводимых на экран. Для выпадающего списка используется значение 1. Это значение по умолчанию. Если значение больше чем 1, вместо выпадающего списка будет выведен список со скроллингом. |
Тег <select> также поддерживает глобальные HTML атрибуты.
Текстовое поле со списком 2. Как это всё-таки сделано в MS Word
Я чуть ранее писал о текстовом поле со списком вот тут. Обещал также, что как только выясню особенности создания текстовых полей со списками в Word, обновить тот пост. Однако, я не буду этого делать, а напишу этот вот пост отдельно. Сейчас поймете почему.Итак, оказывается:
- Word не желает нормально работать с текстовыми полями со списками из Writer (неудивительно впрочем).
- В самом Word есть несколько типов полей со списками, я насчитал ТРИ.
- Нормальный (читай, нужный мне) эффект даёт одна кнопка из трёх.
Итак, скриншотики с комментариями ниже:
Перво наперво, в Word по умолчанию почему-то скрыта вкладка «Разработчик», в которой все и делается:
Вот она, крайняя справа. Активируется она в настройках офиса от микрософта. К чему такая «забота» о пользователях — непонятно.
Теперь та самая кнопка, которая сделает нам хорошо в плане добавления поля со списком заподлицо с текстом:
Вот она подсвечена. Ставим курсор в нужное место в тексте, нажимаем на волшебную кнопку, получаем вот такую штуку:
А вот диалог «Свойства», который вызывается, внезапно, кнопкой «Свойства», в котором происходит наполнение списка желаемым текстом:
Жмём кнопку «Добавить», добавляем нужный текст, жмём кнопку «ОК». Повторить столько раз, сколько вариантов вам требуется. Закрываем диалог, нажатием на «ОК» в нижней части диалога.
И вот так в итоге получается вид поля в документе:
Выбираете нужный вариант и он заменяет собой предыдущий. Строка текста соответственно вставленному варианту раздвинется или сожмется. Разрывов не будет. Всё шоколадно. Текст и текст, не отличишь от соседнего.
Кстати, в таком поле после выбора варианта можно изменить ваш текст в поле вручную! И он таки останется до следующей замены.
Теперь по поводу ещё вставки полей, те самые три кнопки из ларца, одинаковы с лица:
Верхняя кнопка — это та самая нужная нам кнопка по вставке удобных, современных, стильных, модных, молодёжных полей. Кнопка в середине — это как раз текстовое поле, аналогичное по своему внешнему виду и функциям таковому во Writer, однако его работа вызвала у меня удивление…ну, оно не работало у меня просто. Нижняя кнопка вставляет поле со списком, однако оно выглядит чужеродно, как элемент управления на форме (собственно это он и есть, да), а не как составная часть текста. Зачем так сделано? Возможно, ну я надеюсь, что кто-то этим пользуется.
Добавление поля со списком — InfoPath
Поле со списком — это текстовое поле, к которому также прикреплен список. С помощью этого элемента управления пользователи могут выбрать в списке предопределенное значение или ввести в текстовое поле собственное. Список скрыт, пока пользователь не щелкнет стрелку рядом с полем.
В этой статье
Использование поля со списком
Используйте поле со списком, если вы хотите:
-
позволить пользователям выбирать предопределенный вариант из списка или вводить собственное значение;
-
по умолчанию скрывать значения списка в форме;
-
отображать значения, полученные из фиксированного списка, источник данных шаблона формы или внешнего источника данных, например базы данных или списка Microsoft Windows SharePoint Services.
На рисунке ниже пользователь классифицирует расходы в форме отчета о расходах, выбирая значение в поле со списком. Если необходимое значение не отображается, его можно самостоятельно ввести. В этом примере пользователь вводит строку Телефон/факс.
После вставки поля со списком в шаблон формы необходимо указать значения, которые вы хотите использовать в нем. В противном случае при щелчке стрелки рядом с полем будет открываться пустой список. В диалоговом окне Свойства поля со списком вы можете ввести записи самостоятельно или настроить поле со списком на получение записей из базы данных или другого источника.
Связанные элементы управления
В InfoPath предусмотрены элементы управления, похожие на поля со списком, но предназначенные для других целей. Чтобы определить, какой из элементов управления лучше всего подходит для вашего шаблона формы, изучите список ниже.
Список. Как и поле со списком, обычный список позволяет пользователям выбирать предопределенные варианты, однако ввод собственных значений при этом невозможен. Кроме того, в обычном списке сразу отображаются все элементы, тогда как в поле со списком они скрыты, пока пользователь не щелкнет стрелку. Если вы хотите предложить пользователям большое количество вариантов, обычные списки могут занимать слишком много места в шаблоне формы. В этом случае лучше использовать раскрывающийся список или поле со списком.
Раскрывающийся список. Как и поле со списком, раскрывающийся список предназначен для выбора предопределенного значения, по умолчанию скрытого в форме. Тем не менее, в раскрывающийся список нельзя вводить собственные варианты, как в поле со списком.
Список, разрешающий несвязный выбор нескольких строк. Если вы хотите, чтобы пользователи могли выбирать более одного варианта, можно использовать этот элемент управления. Списки, разрешающие несвязный выбор нескольких строк, состоят из двух или более флажков и могут прокручиваться. В них тоже можно вводить собственные значения, как и в поля со списком.
Переключатели. Как и поля со списком, группы переключателей позволяют пользователям выбирать взаимоисключающие значения, однако в этом случае для выбора требуется щелкнуть небольшой кружок, а не элемент в списке.
К началу страницы
Взаимодействие с пользователем
Поля со списком внешне похожи на раскрывающиеся списки, однако в них при необходимости можно вводить собственные значения. Если при создании поля со списком вы вручную ввели в диалоговом окне Свойства поля со списком собственные значения, в качестве записи поля со списком по умолчанию в InfoPath отобразится текст «Выбрать или ввести…». Благодаря этому пользователи смогут понять, что возможны оба действия. Если значения поля со списком взяты из другого элемента формы или в дополнительном источнике данных, текст «Выбрать или ввести…» опускается.
При первом открытии формы элементы поля со списком скрыты. Чтобы отобразить их, пользователю требуется щелкнуть стрелку справа от поля со списком. После этого он может выбрать необходимый вариант.
Если необходимый элемент отсутствует в списке, пользователь может щелкнуть в поле и ввести значение самостоятельно.
К началу страницы
Совместимость
В InfoPath вы можете создать шаблон формы с поддержкой веб-браузера. При оформлении таких шаблонов поля со списком будут недоступны на панели задач Элементы управления, поскольку они не отображаются в веб-браузерах.
К началу страницы
Добавление поля со списком
Действия для вставки поля со списком немного отличаются в зависимости от того, разрабатываете ли вы шаблон формы с нуля или используете в качестве его основы базу данных или другой внешний источник данных.
На следующем рисунке показано, как выглядит поле со списком, выбранное в режиме конструктора.
Элементы управления могут быть связанными или свободными. Если элемент управления связан, он подключен к полю или группе в источнике данных, поэтому данные, вводимые в элемент управления, сохраняются в XML-файле самой формы. Когда элемент управления является свободным, он не подключен к полю или группе, а данные, вводимые в него, не сохраняются. Если выбрать элемент управления или навести на него указатель мыши, в его правом верхнем углу , отобразится текст и значок привязки. В тексте указаны группа или поле в источнике данных, к которым привязан элемент управления. Значок указывает на то, правильно ли элемент управления привязан к полю или группе. Если привязка правильная, выводится зеленый значок. Если с привязкой что-то не так, вы увидите синий или красный значок.
Источник данных для шаблона формы состоит из полей и групп, которые отображаются в иерархическом представлении в области задач Источник данных. Поля со списком всегда привязаны к полям. В приведенном ниже примере поле со списком Категория в шаблоне формы привязано к полю категория в области задач Источник данных.
При создании нового пустого шаблона формы по умолчанию устанавливается флажок Автоматически создавать источник данных в области задач Элементы управления. Это позволяет InfoPath автоматически создавать поля и групп в источнике данных по мере добавления элементов управления в шаблон формы. Эти поля и группы представлены в виде значков папок и файлов в области задач Источник данных.
Если структура шаблона формы основана на существующем XML-файле, базе данных или веб-службе, InfoPath наследует поля и группы в области задач Источник данных из существующего источника данных.
Добавление поля со списком
-
Поместите курсор в то место шаблона формы, куда вы хотите вставить элемент управления.
-
Если область задач Элементы управления не отображается, щелкните Другие элементы управления в меню Вставка или нажмите клавиши ALT+I, C.
-
В области задач Элементы управления сделайте одно из следующего:
-
Чтобы автоматически создать поле в источнике данных, привязанном к списку, установите флажок Автоматически создавать источник данных.
-
Чтобы привязать список к существующему полю, снимите флажок Автоматически создавать источник данных.
Примечание: Если флажок недоступен, источник данных заблокирован. Например, если вы создали структуру шаблона формы на основе схемы XML, возможно, через InfoPath не удастся добавить новые поля или группы в источник данных. Это ограничение помогает предотвратить случайное внесение в схему изменений, которые могут сделать ее недопустимой.
-
-
В разделе Вставить элементы управления щелкните Поле со списком.
-
Если вы сняли флажок Автоматически создавать источник данных на шаге 3, выберите в диалоговом окне Привязка поля со списком поле, к которому вы хотите привязать список.
-
Чтобы добавить метку к элементу управления, введите сверху или слева от него текст, за которым следует двоеточие (:).
-
Чтобы задать значения, которые вы хотите использовать в качестве записей списка, дважды щелкните поле со списком.
-
Откройте вкладку Данные.
-
Заполните поле со списком одним из описанных ниже способов.
Ввод значений списка вручную
Этот вариант удобен, если у вас есть ограниченный набор значений, которые не должны существенно изменяться в будущем. Если значения изменятся, потребуется опубликовать обновленную версию шаблона формы, чтобы пользователи могли просматривать и использовать новые элементы списка.
-
Нажмите кнопку Добавить.
-
В поле Значение введите текст, который вы хотите сохранять, если пользователь выбирает эту запись.
-
В поле Отображаемое имя введите текст, который вы хотите отобразить для этой записи, и нажмите кнопку ОК.
-
Повторите действия 1–3 для каждой записи, которую требуется добавить в список.
-
Чтобы проверить изменения, нажмите кнопку Просмотр на стандартной панели инструментов или нажмите клавиши CTRL+SHIFT+B.
Использование значений из другой части формы
Этот вариант удобен, если вы хотите, чтобы значения в списке изменялись в зависимости от того, какие другие значения пользователи ввели в форму.
-
В разделе Элементы списка щелкните Подставить значения из источника данных формы.
Элементы в списке должны быть связаны с конкретной повторяющейся группой или повторяющемся полем шаблона формы.
-
Нажмите кнопку Выбрать XPath рядом с полем Элементы, а затем в диалоговом окне Выбор поля или группы щелкните повторяющееся поле или повторяющуюся группу с полями, которые будут предоставлять значения для списка, и нажмите кнопку ОК.
-
Нажмите кнопку Выбрать XPath рядом с полем Значение, щелкните поле, содержащее возможные значения для элементов списка, и нажмите кнопку ОК. Одно из этих значений будет сохранено в XML при выборе пользователем элемента в списке.
-
Нажмите кнопку Выбрать XPath рядом с полем Отображаемое имя, щелкните поле, содержащее значения, которые выводятся в списке, и нажмите кнопку ОК.
Совет: Чтобы в списке не было значений с одинаковыми отображаемыми именами, установите флажок Показывать только записи с уникальными отображаемыми именами.
Использование значений из базы данных, веб-службы, XML-документа или сайта SharePoint
Этот вариант удобен, если вы хотите, чтобы значения в списке регулярно обновлялись. Значения обычно хранятся в базе данных или другом внешнем источнике и извлекаются каждый раз при открытии формы.
-
Щелкните Искать значения во внешнем источнике данных.
-
Выполните одно из следующих действий:
-
Если вы уже добавили подключение к данным, щелкните его в поле Подключение к данным.
-
Чтобы добавить новое подключение к данным, нажмите кнопку Добавить, а затем следуйте инструкциям мастера подключения к данным.
Элементы в списке должны быть связаны с конкретной повторяющейся группой или повторяющемся полем.
-
-
Нажмите кнопку Выбрать XPath рядом с полем Элементы, а затем в диалоговом окне Выбор поля или группы щелкните поле или группу с полями, которые будут предоставлять значения для списка, и нажмите кнопку ОК.
-
Нажмите кнопку Выбрать XPath рядом с полем Значение, щелкните поле, содержащее возможные значения для элементов списка, и нажмите кнопку ОК. Одно из этих значений будет сохранено в XML при выборе пользователем элемента в списке.
-
Нажмите кнопку Выбрать XPath рядом с полем Отображаемое имя, щелкните поле, содержащее значения, которые выводятся в списке, и нажмите кнопку ОК.
Совет: Чтобы в списке не было значений с одинаковыми отображаемыми именами, установите флажок Показывать только записи с уникальными отображаемыми именами.
-
К началу страницы
Советы по макету
Приведенные ниже советы помогут вам настроить внешний вид, размер и другие параметры поля со списком.
-
Рекомендуется расширить поле со списком так, чтобы оно было на несколько пробелов шире средней ширины элементов в нем. Благодаря этому элементы списка не будут частично скрыты.
-
Чтобы одновременно изменить ширину нескольких полей со списком, выберите их, нажмите клавиши ALT+ВВОД, откройте вкладку Размер, а затем в поле Ширина введите новое значение.
-
Чтобы одновременно изменить цвет фона для нескольких полей со списком, выберите их. В меню Формат выберите команду Границы и заливка и внесите необходимые изменения на вкладке Заливка.
-
Чтобы настроить шрифт в поле со списком, измените значения в полях Шрифт и Размер шрифта на панели инструментов Форматирование. Чтобы одновременно изменить шрифт и размер шрифта для всех полей со списком в шаблоне формы, щелкните поле со списком, в котором используется нужное форматирование, а затем в меню Формат выберите команду Применить шрифт ко всем элементам управления «Поле со списком».
-
Если вы хотите изменить интервал между полем со списком и объектами шаблона формы вокруг него, настройте параметры полей в диалоговом окне Свойства поля со списком (на вкладке Размер). С помощью полей можно задать интервал точнее, чем с помощью разрывов абзацев.
К началу страницы
— HTML | MDN
HTML тэг <select>
представляет собой элемент управления который содержит меню опций:
Элемент включает глобальные атрибуты.
autofocus
HTML5- Этот атрибут указывает что при загрузке страницы данный элемент формы должен иметь фокус ввода, пока пользователь не переопределит это, к примеру печатая в разных элементах управления. Только один элемент формы может иметь атрибут
autofocus
, элемент является логическим (булевым). disabled
- Этот логический атрибут указывает что пользователь не может взаимодействовать с элементом управления. Если атрибут не указан, элемент управления наследует настройки от содержащего его элемента, к примеру
fieldset
; если у родительского элемента не указан атрибутdisabled
, то элемент управления доступен для взаимодействия. form
HTML5- Этот атрибут указывает к какой конкретно форме относится элемент <select> . Если атрибут указан, его значением должно быть ID формы в том же документе. Это позволяет размещать элементы <select> где угодно в документе, а не только как потомки форм.
multiple
- Этот логический атрибут указывает что возможен выбор нескольких опций в списке. Если данный атрибут не указан, то только одна опция может быть выбрана.
name
- Этот атрибут используется для указания имени элемента управления.
required
HTML5- Этот логический атрибут указывает что обязательно должна быть выбрана опция и которая содержит не пустую строку.
size
- Если элемент управления представлен как прокручиваемый список, этот атрибут указывает количество строк в списке, которые должны быть видны за раз. Браузеру не требуется представлять <select> в виде прокручиваемого списка. Значение по умолчанию 0.
Примечания Firefox: Согласно спецификации HTML5, значение размера по умолчанию должно быть 1; однако на практике, оказывается что это портит некоторые веб сайты, и ни один браузер не придерживается этого на данный момент, поэтому Mozilla предпочла также указать 0 пока что в Firefox.
<select name="select">
<option value="value1">Значение 1</option>
<option value="value2" selected>Значение 2</option>
<option value="value3">Значение 3</option>
</select>
Результат
Примечания
BCD tables only load in the browser
- Другие элементы форм:
<form>
,<legend>
,<label>
,<button>
,<option>
,<datalist>
,<optgroup>
,<fieldset>
, <textarea> (en-US), <keygen> (en-US),<input>
,<output>
,<progress>
and<meter>
. - События запускаемые
<select>
: change.
JavaScript контролы для выбора опций
Обзор
Webix предлагает несколько контролов, которые позволяют выбирать опции из списка: Select, RichSelect, Combo, Multicombo, Multiselect, Checkbox, Radio и Suggest List. С каждым из них удобно и легко работать, а также их легко настроить.
Контрол Select — самый простой из этой группы виджетов. Он позволяет выбирать одну опцию из выпадающего списка.
Если вам нужен более сложный виджет, вы можете выбрать Multicombo, который позволяет выбирать несколько опций из списка. Пользователи также могут вводить текст в поле над списком.
Checkbox
Checkbox — это контрол, который позволяет пользователям управлять параметром с двумя состояниями — включено и выключено. Вы можете добавить несколько чекбоксов для выбора нескольких опций из списка. Webix Checkbox работает также, как обычный HTML чекбокс.
Switch
Switch — это более заметный аналог чекбокса, который хорошо подходит для переключения состояний в настройках. На Switch можно добавлять ярлык для отображения значений ‘включено’ и ‘выключено’.
Radio
Radio — это контрол, который позволяет пользователям выбрать одну опцию из предопределенного набора. Webix Radio работает так же, как и обычный HTML контрол radio.
Suggest List
Suggest List — это контрол, который помогает пользователям заполнять формы. Когда пользователь начинает набирать, на экране появляется список подсказок. Список подсказок формируется в зависимости от введенных символов. Вы можете сочетать этот контрол со стандартным HTML полем ввода, полем ввода Webix Text, или текстовым редактором в виджете для данных. Webix включает различные типы контрола Suggest List.
MentionSuggest
MentionSuggest — это выпадающий список с опциями для текстовых полей. MentionSuggest открывается после того, как пользователь введет определенный символ. После того, как пользователь введет еще минимум один символ, список начнет предлагать опции для подстановки на основе ввода.
MultiSuggest
MultiSuggest — это улучшенная версия контрола Suggest List. Виджет состоит из выпадающего списка опций и позволяет выбор нескольких опций. Выбранные опции подсвечиваются. Кнопка в конце списка позволяет подтвердить выбор и закрыть список.
CheckSuggest
CheckSuggest — это улучшенная версия контрола Suggest List, который позволяет пользователю выбирать несколько опций. Напротив каждой опции в списке — чекбокс, с помощью которого вы можете отметить опцию для выбора.
GridSuggest
GridSuggest — это улучшенная версия контрола Suggest List. Вместо выпадающего списка с опциями — всплывающее окно с виджетом DataTable, легко настраиваемым компонентом для визуализации табличных данных с сортировкой и полосой прокрутки.
DataSuggest
DataSuggest — это улучшенная версия контрола Suggest List. Вместо выпадающего списка опций — окно с виджетом DataView, который идеально подходит для опций с изображениями.
DateRangeSuggest
DateRangeSuggest — это улучшенная версия контрола Suggest List. Вместо выпадающего списка — всплывающее окно с контролом DateRangePicker для выбора диапазона дат.
Select
Select — это контрол, который позволяет выбирать опцию из выпадающего списка. Он работает как стандартный HTML и работа с ним не требует много усилий.
RichSelect
RichSelect — это нередактируемое текстовое поле с всплывающим окном, которое содержит список опций. Всплывающиее окно появляется после клика на поле ввода. Вы можете настроить RichSelect на свой вкус. Вы можете добавить шаблон для опций и установить размеры списка, определить способ загрузки опций, выбрать тип списка, а также получить доступ к всплывающему окну и списку опций для работы с ними.
Combo
Контрол Combo — это редактируемое текстовое поле со всплывающим списком опций, который появляется после клика по полю. Пользователи также могут редактировать содержимое текстового поля. Список опций сокращается в зависимости от введенных символов. Combo предоставляет множество настроек для изменения вида списка опций.
Multicombo — это контрол, который сочетается со всплывающим списком CheckSuggest. Напротив каждой опции из списка есть checkbox, с помощью которого можно выбирать сразу несколько опций. Список появляется по клику на текстовом поле. Пока пользователи вводят символы, список опций соответственно сокращается. Выбранные опции можно убрать из списка, нажав на ‘крестик’. Вы также можете настроить вид выбранных опций и показывать только их количество.
Multiselect — это нередактируемый контрол, который позволяет выбирать опции из выпадающего списка. Вы можете открыть список опций, кликнув по текстовому полю. По умолчанию, Multiselect открывает всплывающий список контрола CheckSuggest, поэтому напротив каждой опции есть чекбокс. Вы можете настроить работу виджета, а также вид списка опций.
О правильном дизайне полей с выпадающими списками 📜⤵️
Выпадающие (они же – раскрывающиеся) списки пользуются дурной славой. Их ставят там, где это не нужно, создают избыточное количество опкций или просто неряшливо оформляют. Сам по себе элемент такого отношения, конечно, не заслуживает. UX-дизайнер Тесс Гэдд в недавном посте на UX Collective разобрала ключевые ошибки и полезные практики в отношении раскрывающихся списков и родственных элементов.
1. Анатомия выпадающего списка
В англоязычной терминологии группа элементов графического интерфейса, о которых мы будем говорить, называется dropdown field
. В общем случае у такого объекта могут быть следующие компоненты:
- Текст метки.
- Контейнер.
- Стрелка для раскрытия списка.
- Заполнитель.
- Полоса прокрутки.
- Меню списка.
- Элементы списка – опции, варианты выбора.
- Разделитель групп элементов.
- Выделенный элемент.
- Текст и оформление для обеспечения обратной связи.
Давайте для начала разберём, какие бывают варианты полей с раскрывающимися списками.
2.1. Стандартный выпадающий список без текстового поля
В активном состоянии стандартный выпадающий список похож на поле для ввода текста, пока вы не нажмете на него и не откроется меню.
Стандартный тип выпадающего списка2.2. Выпадающий список с текстовым полем (или текстовое поле со списком)
Возможность ввода текста особенно удобна в случае большого количества элементов списка. Ещё больше ситуацию упрощает возможность выбрать нужный элемент по нескольким буквам. Как на примере ниже в случае выбора страны.
Выпадающий список с текстовым полемНесколько отличный вариант – автодополнение – текстовое поле предлагает способ завершения слова или фразы.
2.3. Раскрывающийся список с мультиселектом (множественным выбором)
Большинство видов dropdown-элементов являются расширением радиокнопок – можно выбрать лишь один элемент. Но список с мультиселектом ближе к чекбоксам: в одном поле ввода пользователь может выбрать несколько элементов.
Выпадающий список с мультиселектомПо возможности не используйте такие элементы интерфейса – с ними попросту неудобно работать.
2.4. Выпадающий список с группировкой элементов
Длинные списки рассеивают внимание: чтобы упростить поиск, группируйте элементы по категориям. Это хорошее правило в случае, когда пользователь не знает содержания списка и потому нет смысла использовать текстовое поле с поиском.
Выпадающий список с группировкой элементов2.5. Меню с возможностью выбора
Хотя технически меню с селектом не является выпадающим списком, оно является альтернативой таким элементам интерфейса. В отличие от списка, меню сразу открыто и видна часть элементов.
Меню с прокруткойВ мобильных интерфейсах такие решения почти никогда не бывают удобны.
2.6. Выбор даты
Вывод календаря с указанием дней недели оправдан только для выбора дат мероприятий. Вывод календаря раздражает, если, к примеру, нужно ввести дату рождения. Всегда нужно оставлять возможность напечатать дату, оставив соответствующую подсказку о формате ввода.
Выпадающий список для выбора даты3.1. Стандартный стиль
В случае «стандартного» оформления раскрывающихся списков можно встретить ситуацию, когда появляющееся меню откреплено от поля выбора. Такое решение будет естественным, когда в зависимости от текущего положения фокуса на странице, меню может открываться не только вниз, но и вверх.
Стандартный стиль с соединением контейнера и меню элементовСтиль с разделением контейнера и меню элементов3.2. Скругленные углы
Скруглённые углы помогают создать более весёлое, игровое настроение.
Список со скругленными углами3.3. Иконки
Добавление простого значка в поле селектора делает его вид интереснее. Когда заказчик жалуется, что форма выглядит слишком скучно, простое решение – добавить подходящую иконку.
Выпадающий список с иконкой3.4. Иллюстрации
Как правило, не следует добавлять изображения к элементам раскрывающегося списка. Это полезно лишь когда вы хотите обратить внимание на различия между объектами одной категории.
Выпадающий список с иллюстрациямиТем не менее, из-за ограниченного размера списка трудно разглядеть, что собой представляют изображения – обычно это не стоит усилий, если не сделать изображения достаточно большими.
3.5. Material Design
Стиль line only
пропал из методических рекомендаций Material Design, но до сих пор часто встречается в интернете.
line only
для старого оформления списков в Material DesignСтиль одной линии сменился на filled dropdown
– контейнер выделен не только линией, но и затененной областью. Не так легковесно, но более дружелюбно по отношению к пользователю.
filled dropdown
Ещё больший акцент на контейнере списка сделан в контурном стиле оформления outlined dropdown
.
outlined dropdown
Отметим то, что часто упускается из виду: в приведенных примерах первый элемент пуст. Пользователь может «сбросить» раскрывающийся список, если хочет вернуться к этому вопросу позже.
Когда пользователь взаимодействует с полем любого вида, нужно давать обратную связь.
Активное состояние4.1. Блокированный элемент
Если вы блокируете поле ввода атрибутом disabled, пользователи не смогут взаимодействовать с ним, хотя и будут его видеть. Такое поведение может быть необходимо, если содержание списка зависит от ещё не заполненных предшествующих полей.
Блокированный список4.2. Наведение курсора
Если пользователь наводит курсор на раскрывающийся список, он должен показывать готовность к взаимодействию.
Изменение состояния при наведении курсора4.3. Подсветка и состояние фокуса
Подсветка контейнера появляется, когда пользователь использует навигацию по странице с помощью Tab
. Обычно состояние проявляется как «синий ореол» на интерактивных элементах. Состояние фокуса появляется при нажатии Enter
для ввода информации.
Некоторые сайты сочетают в себе состояние выделения и фокуса, поэтому раскрывающийся список открывается сразу же даже без нажатия Enter.
Подсветка (слева) и сочетание подсветки и фокусаВ состоянии фокуса элемент становится интерактивным. Несмотря на то что многие выпадающие списки оставляют стрелку в одном и том же направлении в активном и фокусном состояниях, предпочтительнее менять ее направление – это даёт дополнительный фидбэк.
Состояние фокусаПри наведении курсора на пункты меню они должны выделяться, чтобы было понятно, какая опция будет выбрана при клике.
Состояние фокуса при наведении курсора4.4. Выбранный пункт
Как только пользователь выбрал опцию, меню нужно схлопнуть обратно к исходному состоянию, за исключением того, что на нем будет отображаться выбранный элемент.
Пункт выбран4.5. Обратная связь для ошибочного ввода
В случае свободного ввода текста пользователь может сделать опечатку. Но параметры в раскрывающемся списке предопределены – нужно дать обратную связь, визуально выделив некорректно заполненную форму и дополнив текстовым пояснением.
Обратная связь в случае ошибочного заполненияЭти подсказки должны появляться только в конце отправки формы, в которой раскрывающийся список является дочерним элементом.
5.1. Пустой заполнитель
Если в других текстовых полях нет заполнителей, то и плейсхолдер списка можно оставить пустым.
Вариант с пустым заполнителем5.2. Подсказка
Другой вариант – дать в плейсхолдере одну из классических подсказок.
Вариант заполнителя с подсказкой5.3. Побуждающая фраза
Для каждого конкретного списка можно дать отдельную подсказку, поясняющую, чем текущий список отличается от другого.
Побуждающая фраза: глагол + существительное.5.4. Один из вариантов выбора
Будьте осторожны с тем, чтобы просто показывать один из элементов выпадающего списка. Вы должны быть уверены, что пользователь его увидел и прочитал. Иначе он даст согласие на то, чего не хотел.
Вариант с предпоказом одного из элементов списка6.1. Если в списке меньше пяти вариантов
Если у вас меньше пяти параметров, лучше использовать радиокнопки – один клик вместо двух, много места не занимает, нет задержки перед прочтением вариантов.
Список не нужен, если в нем меньше пяти опцийЧисло 5, конечно, не сакральное – руководствуйтесь здравым смыслом.
6.2. Если у вас две опции, используйте слайдер
Продолжение первого правила: если опций всего две, лучше использовать простой переключатель в виде слайдера.
Если у вас две опции6.3. Иногда легче печатать, чем выбирать
Не используйте выпадающие списки, если на набор текста уходит меньше времени, чем на поиск нужного варианта. Например, дату рождения, легче напечатать, чем использовать три раскрывающихся списка. К тому же, во многих браузерах отлично работает автозаполнение идентичных текстовых полей, чего не скажешь о списках.
Иногда проще напечатать текстРазработчики могут возразить, что проще сделать раскрывающийся список, чем проверять пользовательский ввод. Но важнее не потерять пользователя, создав удобные условия.
В случае числового ввода небольших чисел, например, числа пассажиров, можно облегчить ввод с помощью степпера.
В случае ввода чисел списки тоже обычно не нужныЕсли вводимые значения имеют тип числа с плавающей запятой и точность не критична или есть ранжирование, то можно использовать слайдеры. Особенно это удобно для интервалов.
Для чисел с плавающей запятой – слайдерыТем более для интервалов6.4. Если вариантов много
Если в раскрывающемся списке много опций (этого следует избегать), дайте пользователю возможность «искать» опцию. Выше мы уже рассмотрели соответствующий пример для списка стран.
Когда же нужно использовать раскрывающийся список?
Если в списке пять и более вариантов.
Если пользователь исходно не знает, какой выбор у него есть. Например, пользователь загружает видео, а хост должен знать тип лицензии. Среднестатистический пользователь не будет знать все опции, доступные на платформе, поэтому потребуется раскрывающийся список.
Если время и бюджет ограничены или при работе над MVP, мы склонны использовать нативные параметры системы. Кастомные инпуты – это глазурь на торте, которую иногда нет возможности добавить. Кроме того, когда дело доходит до удобства использования на разных устройствах, нативные выпадающие списки в этом отношении проще и безопаснее.
Наши широкомасштабные тесты на удобство использования показывают, что в то время как 82% сайтов электронной коммерции используют специально разработанные раскрывающиеся списки для оформления заказа, 31% всех настраиваемых раскрывающихся списков имеют значительные проблемы с удобством использования.
Из публикации «5 распространенных ошибок в юзабилити кастомных выпадающих списков» (англ.)
7.1. Дефолтные списки
Вот несколько примеров нативных списков в «дикой природе». Попробуйте их на странице для тестов html.com:
Нативные выпадающие списки для различных платформНативные выпадающие списки для различных платформКак видно из приведенных примеров, элементы для разных платформ и браузеров различаются незначительно. Эти списки не очень красивые, но удобные в использовании.
7.2. Использование оболочки
Следующий подход можно назвать полукастомным. Само поле выглядит нестандартно, но когда вы щелкаете по нему, используется нативный стиль выпадающего списка. Это простой способ одновременно сохранить стиль страницы и снизить стоимость разработки.
Пример использования полукастомного подходаПройдитесь по следующему списку и проверьте, соответствует ли ваш dropdown-элемент правилами доступности:
- Активное состояние выпадающего списка, включая метку, должно быть по высоте не меньше 44px.
- Каждая позиция в раскрывающемся меню должна быть по высоте не менее 44px с зазором между вариантами не менее 8px.
- Цвета должны соответствовать стандарту доступности AAA.
- Выпадающий список должен поддерживать состояние фокуса.
- Выпадающий список должен быть доступен без использования курсора (с помощью
Tab
). - Если вы используете кастомный тип раскрывающего списка, убедитесь, что он может раскрываться вверх, когда он оказался на нижней границе области просмотра.
***
Надеемся, этот пост был для вас полезен. На proglib.io есть ещё много материалов, касающихся дизайна интерфейсов, к примеру:
HTML-тег выбора
Пример
Создайте раскрывающийся список с четырьмя вариантами:
Выбери машину: <выбрать
name = "cars">
Дополнительные примеры «Попробуйте сами» ниже.
Определение и использование
Элемент
используется для создания раскрывающегося списка.
Элемент
чаще всего используется в форме для сбора пользовательского ввода.
Атрибут name
необходим для ссылки
данные формы после отправки формы (если вы опустите name
, данные из раскрывающегося списка отправляться не будут).
Атрибут id
необходим для связи
раскрывающийся список с меткой.
Теги
Совет: Всегда добавляйте тег
Поддержка браузера
Элемент | |||||
---|---|---|---|---|---|
<выбрать> | Есть | Есть | Есть | Есть | Есть |
Атрибуты
Атрибут | Значение | Описание |
---|---|---|
автофокус | автофокус | Указывает, что раскрывающийся список должен автоматически получать фокус при загрузке страницы. |
отключен | отключен | Указывает, что раскрывающийся список должен быть отключен. |
форма | form_id | Определяет, какая форма раскрывающегося списка принадлежит |
кратно | несколько | Указывает, что можно выбрать сразу несколько опций |
название | наименование | Определяет имя раскрывающегося списка |
требуется | требуется | Указывает, что пользователь должен выбрать значение перед отправкой формы |
размер | номер | Определяет количество видимых опций в раскрывающемся списке |
Глобальные атрибуты
Тег
также поддерживает глобальные атрибуты в HTML.
Атрибуты событий
Тег
также поддерживает атрибуты событий в HTML.
Другие примеры
Пример
Используйте
Связанные страницы
Ссылка на HTML DOM: выберите объект
Учебное пособие по CSS: стилизация форм
Настройки CSS по умолчанию
Нет.
HTML DOM Выбрать объект
Выбрать объект
Объект Select представляет элемент HTML
Доступ к выбранному объекту
Вы можете получить доступ к элементу
Совет: Вы также можете получить доступ к объекту Select, выполнив поиск в коллекции элементов формы.
Создать объект выбора
Вы можете создать элемент
Выбор коллекций объектов
Коллекция | Описание |
---|---|
варианты | Возвращает набор всех параметров в раскрывающемся списке |
Выбрать свойства объекта
Объект | Описание |
---|---|
автофокус | Устанавливает или возвращает, должен ли раскрывающийся список автоматически получать фокус при загрузке страницы. |
отключен | Устанавливает или возвращает, отключен ли раскрывающийся список. |
форма | Возвращает ссылку на форму, содержащую раскрывающийся список. |
длина | Возвращает количество элементов |
кратно | Устанавливает или возвращает, можно ли выбрать более одного варианта из раскрывающегося списка. |
название | Устанавливает или возвращает значение атрибута имени раскрывающегося списка |
выбрано Индекс | Устанавливает или возвращает индекс выбранной опции в раскрывающемся списке |
размер | Задает или возвращает значение размера раскрывающегося списка |
тип | Возвращает, какой тип элемента формы находится в раскрывающемся списке. |
значение | Устанавливает или возвращает значение выбранной опции в раскрывающемся списке |
Выбор методов объекта
Метод | Описание |
---|---|
добавить () | Добавляет параметр в раскрывающийся список |
checkValidity () | |
удалить () | Удаляет параметр из раскрывающегося списка |
Стандартные свойства и события
Объект Select также поддерживает стандартные свойства и события.
Связанные страницы
Учебное пособие по HTML: формы HTML
HTML-ссылка: HTML-тег
HTML Combobox с JavaScript и CSS
// Code By Webdevtrick (https://webdevtrick.com)
const Keys = {
Backspace: ‘Backspace’,
Clear: ‘Clear’,
Down: ‘ArrowDown’,
End: ‘End’,
Enter: ‘Enter’,
Escape: ‘Escape’,
Home: ‘Home’,
Left: ‘ArrowLeft’,
PageDown: ‘PageDown ‘,
PageUp:’ PageUp ‘,
Right:’ ArrowRight ‘,
Space:’ ‘,
Tab:’ Tab ‘,
Up:’ ArrowUp ‘};
const MenuActions = {
Close: 0,
CloseSelect: 1,
First: 2,
Last: 3,
Next: 4,
Open: 5,
Previous: 6,
Выберите: 7,
Пространство: 8,
Тип: 9};
// фильтрация массива опций по входной строке
// возвращает массив опций, которые начинаются со строки фильтра, независимо от регистра
function filterOptions (options = [], filter, exclude = []) {
варианты возврата.filter (option => {
const matches = option.toLowerCase (). indexOf (filter.toLowerCase ()) === 0;
совпадений возврата && exclude.indexOf (option) <0;
});
}
// вернуть массив точных совпадений имен опций из строки, разделенной запятыми
function findMatches (options, search) {
const names = search.split (‘,’);
return names.map (name => {
const match = options.фильтр (option => name.trim (). toLowerCase () === option.toLowerCase ());
вернуть match.length> 0? совпадение [0]: ноль;
}).
фильтр (option => option! == null);
}
// вернуть действие combobox при нажатии клавиши
function getActionFromKey (event, menuOpen) {
const {key, altKey, ctrlKey, metaKey} = event;
// обрабатываем открытие при закрытии
if (! MenuOpen && (key === Keys.Вниз || key === Keys.Enter || key === Keys.Space)) {
return MenuActions.Open;
}
// обрабатываем ключи при открытии
if (key === Keys.Down) {
return MenuActions.Next;
} else
if (key === Keys.Up) {
return MenuActions.Previous;
} else
if (key === Keys.Home) {
return MenuActions.First;
} else
if (ключ === Keys.Конец) {
return MenuActions.Last;
} else
if (клавиша === Keys.Escape) {
return MenuActions.Close;
} else
if (key === Keys.Enter) {
return MenuActions.CloseSelect;
} else
if (клавиша === Keys.Space) {
return MenuActions.Space;
} else
if (key === Keys.Backspace || key === Keys.Clear || key.length === 1 &&! AltKey &&! CtrlKey &&! MetaKey) {
return MenuActions.Тип;
}
}
// получить индекс опции, которая соответствует строке
function getIndexByLetter (options, filter) {
const firstMatch = filterOptions (options, filter) [0];
вернуть первый матч? options.indexOf (firstMatch): -1;
}
// получить обновленный индекс опции
function getUpdatedIndex (current, max, action) {
switch (action) {
case MenuActions.Первый:
возврат 0;
case MenuActions.Last:
return max;
case MenuActions.Previous:
return Math.max (0, current — 1);
case MenuActions.Next:
return Math.min (max, current + 1);
по умолчанию:
return current;}
}
// проверяем, прокручивается ли элемент в настоящее время
function isScrollable (element) {
return element && element.clientHeight } // убедитесь, что данный дочерний элемент находится в пределах видимой области прокрутки родителя function keepScrollVisibility (activeElement, scrollParent) { const {offsetHeight, offsetTop} = activeElement; const {offsetHeight: parentOffsetHeight, scrollTop} = scrollParent; const isAbove = offsetTop const isBelow = offsetTop + offsetHeight> scrollTop + parentOffsetHeight; if (isAbove) { scrollParent.scrollTo (0, offsetTop); } else if (isBelow) { scrollParent.scrollTo (0, offsetTop — parentOffsetHeight + offsetHeight); } } / * * Редактируемый код комбинированного списка * / const Combobox = function (el, options) { // element refs this.el = el; this.inputEl = el.querySelector (‘ввод’); this.listboxEl = el.querySelector (‘[role = listbox]’); // данные это.idBase = this.inputEl.id; this.options = options; // состояние this.activeIndex = 0; this.open = false; }; Combobox.prototype.init = function () { this.inputEl.value = options [0]; this.inputEl.addEventListener (‘ввод’, this.onInput.bind (это)); this.inputEl.addEventListener (‘размытие’, this.onInputBlur.bind (это)); это.inputEl.addEventListener (‘щелчок’, () => this.updateMenuState (true)); this.inputEl.addEventListener (‘keydown’, this.onInputKeyDown.bind (это)); this.options.map ((option, index) => { const optionEl = document.createElement (‘div’); optionEl.setAttribute (‘role’, ‘option’); optionEl .id = `$ {this.idBase} — $ {index}`; optionEl.className = index === 0? ‘combo-option option-current’: ‘combo-option’; optionEl.setAttribute (‘aria-selected’, `$ {index === 0}`); optionEl.innerText = option; optionEl.addEventListener (‘щелчок’, () => {this.onOptionClick (index);}); optionEl.addEventListener (‘mousedown’, this.onOptionMouseDown.bind (это)); this.listboxEl.appendChild (optionEl); }); }; Combobox.prototype.onInput = function () { const curValue = this.inputEl.value; const соответствует = filterOptions (this.options, curValue); // установите для activeIndex первую опцию сопоставления // (или оставьте ее в покое, если активная опция уже находится в наборе сопоставлений) const filterCurrentOption = match.filter (option => option === this .options [this.activeIndex]); if (соответствует.length> 0 &&! FilterCurrentOption.length) { this.onOptionChange (this.options.indexOf (соответствует [0])); } const menuState = this.options.length> 0; if (this.open! == menuState) { this.updateMenuState (menuState, false); } }; Combobox.prototype.onInputKeyDown = функция (событие) { const max = this.options.length — 1; const action = getActionFromKey (событие, this.open); переключатель (действие) { case MenuActions.Next: case MenuActions.Last: case MenuActions.Первый: case MenuActions.Previous: event.preventDefault (); вернуть this.onOptionChange (getUpdatedIndex (this.activeIndex, max, action)); case MenuActions.CloseSelect: event.preventDefault (); this.selectOption (this.activeIndex); вернуть this.updateMenuState (false); case MenuActions.Close: event.preventDefault (); вернуть это.updateMenuState (ложь); case MenuActions.Open: return this.updateMenuState (true);} }; Combobox.prototype.onInputBlur = function () { if (this.ignoreBlur) { this.ignoreBlur = false; возврат; } if (this.open) { this.selectOption (this.activeIndex); this.updateMenuState (ложь, ложь); } }; Поле со списком.prototype.onOptionChange = функция (индекс) { this.activeIndex = index; this.inputEl.setAttribute (‘aria-activedescendant’, `$ {this.idBase} — $ {index}`); // обновить активный стиль const options = this.el.querySelectorAll (‘[role = option]’); [… параметры] .forEach (optionEl => { optionEl.classList.remove (‘option-current’); }); опции [индекс] .classList.add (‘option-current’); если (this.open && isScrollable (this.listboxEl)) { keepScrollVisibility (параметры [индекс], this.listboxEl); } }; Combobox.prototype.onOptionClick = function (index) { this.onOptionChange (index); this.selectOption (индекс); this.updateMenuState (ложь); }; Combobox.prototype.onOptionMouseDown = function () { this.ignoreBlur = true; }; Поле со списком.prototype.selectOption = функция (индекс) { const selected = this.options [index]; this.inputEl.value = selected; this.activeIndex = index; // обновить aria-selected const options = this.el.querySelectorAll (‘[role = option]’); [… параметры] .forEach (optionEl => { optionEl.setAttribute (‘aria-selected’, ‘false’); }); опции [индекс] .setAttribute (‘aria-selected’, ‘true’); }; Поле со списком.prototype.updateMenuState = function (open, callFocus = true) { this.open = open; this.inputEl.setAttribute (‘расширенный aria’, `$ {open}`); открыто? this.el.classList.add (‘открыть’): this.el.classList.remove (‘открыть’); callFocus && this.inputEl.focus (); }; // Комбинация инициализации const comboEl = document.querySelector (‘. Js-combobox’); const options = [‘HTML’, ‘CSS’, ‘JavaScript’, ‘PHP’, ‘MySQL’, ‘React’, ‘Angular’, ‘Python’]; const comboComponent = новый Combobox (comboEl, параметры); комбоКомпонент.в этом(); / * * Код выбора только для чтения * / const Select = function (el, options) { // element refs this.el = el; this.comboEl = el.querySelector (‘[роль = поле со списком]’); this.listboxEl = el.querySelector (‘[role = listbox]’); // данные this.idBase = this.comboEl.id; this.options = options; // укажите this.activeIndex = 0; this.open = false; }; Select.prototype.init = function () { this.comboEl.innerHTML = options [0]; this.comboEl.addEventListener (‘размытие’, this.onComboBlur.bind (это)); this.comboEl.addEventListener (‘щелкнуть’, () => this.updateMenuState (true)); this.comboEl.addEventListener (‘keydown’, this.onComboKeyDown.bind (это)); this.options.map ((option, index) => { const optionEl = document.createElement (‘div’); optionEl.setAttribute (‘role’, ‘option’); optionEl.id = `$ {this. idBase} — $ {index} `; optionEl.className = index === 0? ‘combo-option option-current’: ‘combo-option’; optionEl.setAttribute (‘aria-selected’,` $ {index === 0} `); optionEl.innerText = option; optionEl.addEventListener (‘click’, event => { event.stopPropagation (); this.onOptionClick (индекс); }); optionEl.addEventListener (‘mousedown’, this.onOptionMouseDown.bind (это)); this.listboxEl.appendChild (optionEl); }); }; Select.prototype.onComboKeyDown = функция (событие) { const {key} = событие; const max = this.options.length — 1; const action = getActionFromKey (событие, this.открыто); переключатель (действие) { case MenuActions.Next: case MenuActions.Last: case MenuActions.First: case MenuActions.Previous: event.preventDefault (); вернуть this.onOptionChange (getUpdatedIndex (this.activeIndex, max, action)); case MenuActions.CloseSelect: case MenuActions.Space: event.preventDefault (); это.selectOption (this.activeIndex); case MenuActions.Close: event.preventDefault (); вернуть this.updateMenuState (false); case MenuActions.Type: this.updateMenuState (true); вернуть this.onOptionChange (Math.max (0, getIndexByLetter (this.options, key))); case MenuActions.Open: event.preventDefault (); return this.updateMenuState (true);} }; Выбрать.prototype.onComboBlur = function () { if (this.ignoreBlur) { this.ignoreBlur = false; возврат; } if (this.open) { this.selectOption (this.activeIndex); this.updateMenuState (ложь, ложь); } }; Select.prototype.onOptionChange = function (index) { this.activeIndex = index; this.comboEl.setAttribute (‘aria-activedescendant’, `$ {this.idBase} — $ {index} `); // обновить активный стиль const options = this.el.querySelectorAll (‘[role = option]’); [… параметры] .forEach (optionEl => { optionEl.classList.remove (‘option-current’); }); опции [индекс] .classList.add (‘option-current’); if (isScrollable (this.listboxEl)) { keepScrollVisibility (параметры [индекс], this.listboxEl); } }; Выбрать.prototype.onOptionClick = функция (индекс) { this.onOptionChange (индекс); this.selectOption (индекс); this.updateMenuState (ложь); }; Select.prototype.onOptionMouseDown = function () { this.ignoreBlur = true; }; Select.prototype.selectOption = функция (индекс) { const selected = this.options [index]; this.comboEl.innerHTML = selected; это.activeIndex = индекс; // обновить aria-selected const options = this.el.querySelectorAll (‘[role = option]’); [… параметры] .forEach (optionEl => { optionEl.setAttribute (‘aria-selected’, ‘false’); }); опции [индекс] .setAttribute (‘aria-selected’, ‘true’); }; Select.prototype.updateMenuState = function (open, callFocus = true) { this.open = open; это.comboEl.setAttribute (‘расширенная ария’, `$ {open}`); открыто? this.el.classList.add (‘открыть’): this.el.classList.remove (‘открыть’); callFocus && this.comboEl.focus (); }; // init select const selectEl = document.querySelector (‘. Js-select’); const selectComponent = новый Выбрать (selectEl, options); selectComponent.init (); / * * Код множественного выбора * / const Multiselect = function (el, options) { // element refs this.el = el; this.inputEl = el.querySelector (‘ввод’); this.listboxEl = el.querySelector (‘[role = listbox]’); this.idBase = this.inputEl.id; this.selectedEl = document.getElementById (`$ {this.idBase} -selected`); // данные this.options = options; // состояние this.activeIndex = 0; this.open = false; }; Множественный выбор.prototype.init = function () { this.inputEl.addEventListener (‘ввод’, this.onInput.bind (это)); this.inputEl.addEventListener (‘размытие’, this.onInputBlur.bind (это)); this.inputEl.addEventListener (‘щелкнуть’, () => this.updateMenuState (true)); this.inputEl.addEventListener (‘keydown’, this.onInputKeyDown.bind (это)); this.listboxEl.addEventListener (‘размытие’, this.onInputBlur.bind (это)); this.options.map ((option, index) => { const optionEl = document.createElement (‘div’); optionEl.setAttribute (‘role’, ‘option’); optionEl.id = `$ {this. idBase} — $ {index} `; optionEl.className = index === 0? ‘combo-option option-current’: ‘combo-option’; optionEl.setAttribute (‘aria-selected’, ‘false ‘); optionEl.innerText = option; optionEl.addEventListener (‘ щелкнуть ‘, () => {this.onOptionClick (индекс);}); optionEl.addEventListener (‘mousedown’, this.onOptionMouseDown.bind (это)); this.listboxEl.appendChild (optionEl); }); }; Multiselect.prototype.onInput = function () { const curValue = this.inputEl.value; const соответствует = filterOptions (this.options, curValue); // установите для activeIndex первую опцию соответствия // (или оставьте ее в покое, если активная опция уже находится в соответствующем наборе) const filterCurrentOption = соответствует.фильтр (option => option === this.options [this.activeIndex]); if (соответствует.length> 0 &&! FilterCurrentOption.length) { this.onOptionChange (this.options.indexOf (соответствует [0])); } const menuState = this.options.length> 0; if (this.open! == menuState) { this.updateMenuState (menuState, false); } }; Multiselect.prototype.onInputKeyDown = функция (событие) { const max = this.options.length — 1; const action = getActionFromKey (событие, this.open); переключатель (действие) { case MenuActions.Next: case MenuActions.Last: case MenuActions.First: case MenuActions.Previous: event.preventDefault (); вернуть this.onOptionChange (getUpdatedIndex (this.activeIndex, max, action)); case MenuActions.CloseSelect: событие.preventDefault (); вернуть this.updateOption (this.activeIndex); case MenuActions.Close: event.preventDefault (); вернуть this.updateMenuState (false); case MenuActions.Open: return this.updateMenuState (true);} }; Multiselect.prototype.onInputBlur = function () { if (this.ignoreBlur) { this.ignoreBlur = false; возврат; } если (this.open) { this.updateMenuState (false, false); } }; Multiselect.prototype.onOptionChange = function (index) { this.activeIndex = index; this.inputEl.setAttribute (‘aria-activedescendant’, `$ {this.idBase} — $ {index}`); // обновить активный стиль const options = this.el.querySelectorAll (‘[role = option]’); [… опции] .forEach (optionEl => { optionEl.classList.remove (‘текущая опция’); }); опции [индекс] .classList.add (‘option-current’); if (this.open && isScrollable (this.listboxEl)) { keepScrollVisibility (options [index], this.listboxEl); } }; Multiselect.prototype.onOptionClick = function (index) { this.onOptionChange (index); this.updateOption (индекс); это.inputEl.focus (); }; Multiselect.prototype.onOptionMouseDown = function () { this.ignoreBlur = true; }; Multiselect.prototype.removeOption = функция (индекс) { const option = this.options [index]; // обновить aria-selected const options = this.el.querySelectorAll (‘[role = option]’); options [индекс] .setAttribute (‘aria-selected’, ‘false’); опций [индекс].classList.remove (‘выбранная опция’); // удалить кнопку const buttonEl = document.getElementById (`$ {this.idBase} -remove — $ {index}`); this.selectedEl.removeChild (buttonEl.parentElement); }; Multiselect.prototype.selectOption = функция (индекс) { const selected = this.options [index]; this.activeIndex = index; // обновить aria-selected const options = this.el.querySelectorAll (‘[роль = опция]’); опции [индекс] .setAttribute (‘aria-selected’, ‘true’); options [индекс] .classList.add (‘option-selected’); // добавить кнопку выбора удаления const buttonEl = document.createElement (‘button’); const listItem = document.createElement (‘li’); buttonEl.className = ‘опция удаления’; buttonEl.type = ‘кнопка’; buttonEl.id = `$ {this.idBase} -remove — $ {index}`; кнопка Эл.setAttribute (‘aria-описаноby’, `$ {this.idBase} -remove`); buttonEl.addEventListener (‘щелчок’, () => {this.removeOption (index);}); buttonEl.innerHTML = selected + »; listItem.appendChild (buttonEl); this.selectedEl.appendChild (listItem); }; Multiselect.prototype.updateOption = функция (индекс) { const option = this.options [index]; const optionEl = this.el.querySelectorAll (‘[роль = опция]’) [индекс]; const isSelected = optionEl.getAttribute (‘aria-selected’) === ‘true’; if (isSelected) { this.removeOption (index); } else { this.selectOption (index); } this.inputEl.value = »; }; Multiselect.prototype.updateMenuState = function (open, callFocus = true) { this.open = открытый; this.inputEl.setAttribute (‘расширенный aria’, `$ {open}`); открыто? this.el.classList.add (‘открыть’): this.el.classList.remove (‘открыть’); callFocus && this.inputEl.focus (); }; // init multiselect const multiselectEl = document.querySelector (‘. Js-multiselect’); const multiselectComponent = новый Multiselect (multiselectEl, options); мультиселектКомпонент.в этом(); Следующий пример реализации шаблона проектирования ARIA для combobox
демонстрирует виджет combobox с одним выбором, который функционально аналогичен элементу Подобные примеры включают: Хотя функциональные возможности и взаимодействие с пользователем в этом примере почти эквивалентны элементу HTML Пример поля со списком на этой странице реализует следующий интерфейс клавиатуры.
Другие варианты и параметры интерфейса клавиатуры описаны в
Раздел «Взаимодействие с клавиатурой» шаблона проектирования combobox. ПРИМЕЧАНИЕ: Когда визуальный фокус находится в списке, фокус DOM остается на поле со списком, а значение Пример поля со списком на этой странице реализует следующие роли, состояния и свойства ARIA.Информация о других способах применения ролей, состояний и свойств ARIA доступна в разделе
Раздел ролей, состояний и свойств шаблона проектирования combobox. Тег выбора в HTML используется для создания раскрывающегося списка опций, которые можно выбрать .Тег option содержит значение, которое будет использоваться при выборе. Значение по умолчанию для элемента select может быть установлено с помощью атрибута ‘selected’ требуемой опции. Это логический атрибут. Синтаксис: Пример-1: Использование выбранного атрибута. Вывод: После щелчка по списку: Пример 2: Это также можно использовать для добавления сообщения типа «Выберите параметр» в списке.Эта опция будет иметь атрибуты hidden и disabled в дополнение к selected. Вывод: После нажатия list: HTML - это основа веб-страниц, используется для разработки веб-страниц путем структурирования веб-сайтов и веб-сайтов. pps.Вы можете изучить HTML с нуля, следуя этому руководству по HTML и примерам HTML. Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные концепции конкурентного программирования с помощью веб-дизайна для начинающих | HTML курс. Примечание Это руководство по дизайну было создано для Windows 7 и не обновлялось для новых версий Windows.Большая часть рекомендаций по-прежнему применима в принципе, но презентация и примеры не отражают наши текущие рекомендации по проектированию. С помощью раскрывающегося списка или поля со списком пользователи делают выбор из списка взаимоисключающих значений. Пользователи могут выбрать один и только один вариант. В стандартном раскрывающемся списке пользователи ограничены выбором в списке, но с помощью поля со списком они могут ввести вариант, которого нет в списке. Типичное поле со списком. При чтении этой статьи важно понимать следующие термины: Примечание Рекомендации по верстке представлены в отдельной статье. Чтобы принять решение, рассмотрите следующие вопросы: Раскрывающиеся списки Есть ли вариант по умолчанию, который рекомендуется для большинства пользователей в большинстве ситуаций? Неужели видеть выбранный вариант гораздо важнее, чем видеть альтернативы? Рассмотрите возможность использования раскрывающегося списка, если вы не хотите побуждать пользователей вносить изменения, скрывая альтернативы.Если нет, подумайте о переключателях, списке с одним выбором или редактируемом поле со списком, в которых больше внимания уделяется альтернативным вариантам. В этом примере наивысшее качество цвета - лучший выбор для большинства пользователей, поэтому раскрывающийся список - хороший выбор, чтобы преуменьшить количество альтернатив. Хотите обратить внимание на вариант? Если это так, подумайте о переключателях, списке с одним выбором или редактируемом списке, которые, как правило, привлекают больше внимания, занимая больше места на экране.Поскольку раскрывающиеся списки компактны, они являются хорошим выбором для вариантов, которые вы хотите недооценивать. Требуется ли экранное пространство? Если это так, используйте раскрывающийся список, поскольку используемое пространство на экране фиксировано и не зависит от количества вариантов. Есть ли в окне другие раскрывающиеся списки? Если да, рассмотрите возможность использования раскрывающегося списка для единообразия. Редактируемые раскрывающиеся списки В дополнение к принципам, только что предусмотренным для раскрывающихся списков, также применяются следующие правила: Ограничены ли возможные варианты? Если да, используйте вместо этого обычный раскрывающийся список.Поля со списком предназначены для неограниченного ввода, в котором пользователям может потребоваться ввести значение, которого в данный момент нет в списке. Поскольку ввод не ограничен, если пользователи вводят недопустимый текст, вы должны обработать ошибку сообщением об ошибке. Можете ли вы заранее перечислить наиболее вероятные варианты ? В противном случае используйте текстовое поле. Используется ли раскрывающийся список для перечисления предыдущих введенных пользователем данных? Если пользователям не нужно просматривать полный список ранее введенных данных, используйте текстовое поле с опцией автозаполнения. В этом примере пользователям может потребоваться просмотреть свой предыдущий ввод, поэтому редактируемый раскрывающийся список - хороший выбор. В этом примере текстовое поле с автозаполнением - хороший выбор. Потребуется ли пользователям помощь в выборе допустимых значений? Если да, используйте вместо этого текстовое поле с кнопкой «Обзор». В этом примере пользователи могут щелкнуть «Кому», чтобы помочь им выбрать допустимые значения. Важно ли побуждать пользователей пересматривать альтернативные варианты или предлагать изменения? Если да, рассмотрите возможность использования вместо этого редактируемого списка.С редактируемым раскрывающимся списком пользователи не будут знать об альтернативах, пока список не будет удален. Нужно ли пользователям быстро находить элемент в большом списке? (только Win32) Если да, используйте поле со списком, потому что пользователи могут выбрать элемент, введя его полное имя. Напротив, раскрывающийся список Win32 выбирает элементы только по последнему набранному символу (поэтому ввод «июн» в список месяцев будет соответствовать ноябрю, а не июню). В этом случае используйте поле со списком, даже если возможные варианты ограничены. Редактируемые списки Для раскрывающихся списков количество элементов в списке не является фактором при выборе элемента управления , потому что они масштабируются от тысяч элементов до одного. Редактируемые раскрывающиеся списки масштабируются от тысяч элементов до нуля, поскольку пользователи могут вводить значение, которого нет в списке. Поскольку для данных можно использовать раскрывающиеся списки, количество элементов может быть неизвестно заранее и, возможно, не может быть гарантировано. Всегда включайте как минимум три элемента в редактируемые списки, чтобы оправдать дополнительное пространство на экране. Выпадающие списки и поля со списком имеют несколько шаблонов использования: Сортировка элементов списка в логическом порядке , например группировка тесно связанных параметров вместе, размещение наиболее общих параметров в первую очередь или использование алфавитного порядка. Сортируйте имена в алфавитном порядке, числа в числовом порядке и даты в хронологическом порядке. Списки из 12 или более элементов следует отсортировать в алфавитном порядке, чтобы их было легче найти. Правильно: В этом примере элементы списка отсортированы по их пространственному соотношению. Неправильно: В этом примере так много элементов списка, что их нужно отсортировать в алфавитном порядке. Правильно: В этом примере элементы списка отсортированы в алфавитном порядке, за исключением параметра, который представляет все элементы. Поместите параметры, которые представляют все или нет, в начало списка, независимо от порядка сортировки оставшихся элементов. Заключите метаопции в круглые скобки. В этом примере «(Нет)» является метаопцией, потому что это недопустимое значение для выбора, а скорее описывает, что сама опция не используется. При отключении раскрывающегося списка или поля со списком также отключите все связанные метки и командные кнопки. Когда один раскрывающийся список используется для изменения представления связанного элемента управления, изменяет представление сразу при выборе вместо того, чтобы требовать отдельной кнопки команды. Используйте отдельную командную кнопку, только если для рендеринга списка требуется значительное время. Однако для этой цели предпочтительнее использовать заголовки списков и кнопки меню. Нет пустых элементов списка используйте метаопции вместо . Пользователи не знают, как интерпретировать пустые элементы, в то время как значение мета-параметров является явным. Правильно: Неправильно: В неверном примере значение пустой опции неясно. Используйте предварительный просмотр в элементах списка, когда лучше показать с изображениями, чем описывать, используя только текст. В этом примере предварительный просмотр объясняет параметры намного лучше, чем просто текст. Не используйте ненужные, бесполезные значки в превью . Неправильно: В этом примере значки предварительного просмотра не нужны, потому что они не передают никакой информации. По возможности ограничивайте длину вводимого текста. Например, если допустимый ввод - число от 0 до 999, используйте поле со списком, которое ограничено тремя символами. Если существует много возможных вариантов, сфокусируйте содержимое списка на наиболее вероятных вариантах . Поскольку пользователи могут вводить значения, которых нет в списке, в полях со списком не обязательно перечислять все варианты, а только вероятные варианты или репрезентативную выборку. В этом примере не указаны многие допустимые варианты, например 15 или шрифты половинного размера, например 9,5. Подсказка - это метка или короткая инструкция, помещенная в редактируемый раскрывающийся список в качестве значения по умолчанию. В отличие от статического текста, подсказки исчезают с экрана, когда пользователь вводит что-то в поле со списком или получает фокус ввода. Типичное приглашение. Использовать подсказку, когда: Не используйте подсказки только для того, чтобы побудить пользователей выбрать что-то из списка или нажимать кнопки. Например, такие запросы, как «Выберите параметр» или «Введите имя файла, а затем нажмите« Отправить », не нужны. При использовании подсказок: Неправильно: В этом примере место на экране не в приоритете; после заполнения редактируемого раскрывающегося списка пользователям становится сложно вспомнить, для чего он нужен; а текст подсказки можно редактировать и рисовать так же, как и настоящий текст. Рекомендуемый размер и интервал для раскрывающихся списков и полей со списком. Контрольные этикетки Напишите метку как слово или фразу, а не как предложение, и завершите его двоеточием. Исключения: Назначьте уникальный ключ доступа для каждой метки. Инструкции см. В разделе Клавиатура. Используйте заглавные буквы в стиле предложения. Разместите метку слева от элемента управления или над ним и выровняйте метку по левому краю элемента управления. Если метка находится слева, выровняйте текст метки по вертикали с текстом элемента управления. Правильно: В этом примере метка правильно выровнена с контрольным текстом. Неправильно: В этом примере метка неправильно выровнена с контрольным текстом. Вы можете указать единицы измерения (секунды, соединения и т. Д.) В скобках после метки. Не делайте содержимое раскрывающегося списка или поля со списком (или его метки единиц измерения) частью предложения, потому что это невозможно локализовать. Текст опции Текст инструкции Если вам нужно добавить инструктивный текст о раскрывающемся списке или поле со списком, добавьте его над меткой. Используйте полные предложения с окончанием пунктуации. Используйте заглавные буквы в стиле предложения. Дополнительная полезная, но не нужная информация должна быть краткой. Поместите эту информацию в круглые скобки между меткой и двоеточием или без скобок под элементом управления. В этом примере показана дополнительная информация, размещенная под элементом управления. При обращении к раскрывающимся спискам: Пример: в списке Размер шрифта щелкните Крупные шрифты . При обращении к полям со списком: Пример: в поле Font введите шрифт, который вы хотите использовать. Мгновенно делитесь кодом, заметками и фрагментами. Поле со списком HTML Пример комбинированного списка только для выбора | WAI-ARIA Authoring Practices 1.2
Пример поля со списком только для выбора | Практика разработки WAI-ARIA 1.2 select
HTML .
В отличие от примеров редактируемых полей со списком, это поле со списком только для выбора не создается с элементом
и не принимает произвольный ввод данных пользователем.Однако, как и в HTML
, пользователи могут вводить символы для выбора параметров соответствия. Специальные возможности
select
с атрибутом size = "1"
, реализованы следующие различия в поведении, чтобы улучшить как доступность, так и общее удобство использования. aria-activedescendant
.
Это позволяет пользователям воспринимать наличие опций, а пользователям вспомогательных технологий - понимать размер списка опций. Поддержка клавиатуры
Закрытый комбинированный список
Ключ Функция Стрелка вниз Alt + стрелка вниз Открывает список без перемещения фокуса или изменения выбора. Стрелка вверх Введите Открывает список без перемещения фокуса или изменения выбора. Пространство Открывает список без перемещения фокуса или изменения выбора. Дом Открывает список и перемещает визуальный фокус на первый вариант. Конец Открывает список и перемещает визуальный фокус на последний вариант. Печатаемые символы Всплывающее окно со списком
aria-activedescendant
в поле со списком устанавливается равным значению, которое относится к параметру списка, который визуально отображается как сфокусированный.Если в следующих описаниях клавиатурных команд упоминается фокус, они относятся к визуальному индикатору фокуса.
Для получения дополнительной информации об этой технике управления фокусом см.
Использование aria-activedescendant для управления фокусом. Ключ Функция Введите Пространство Выступ
закрывает список, но не перемещает фокус на вкладку.
Этот шаблон соответствует поведению других комбинированных списков, а не собственному элементу в этом случае. Побег Стрелка вниз Стрелка вверх Alt + стрелка вверх Дом Перемещает визуальный фокус к первому варианту. Конец Перемещает визуальный фокус на последнюю опцию. PageUp Перемещает визуальный фокус на 10 пунктов вверх (или к первому варианту). PageDown Перемещает визуальный фокус вниз на 10 вариантов (или к последнему варианту). Печатаемые символы Роль, свойство, состояние и атрибуты Tabindex
Поле со списком
Роль Атрибут Элемент Использование поле со списком
дел
Обозначает ввод как поле со списком. aria-labelledby = "# IDREF"
дел
Обозначает элемент, который маркирует поле со списком. aria-controls = "# IDREF"
дел
Обозначает элемент, который служит всплывающим окном. aria-extended = "false"
дел
Указывает, что всплывающий элемент не отображается . aria-extended = "true"
дел
Указывает, что всплывающий элемент отображается как . aria-activedescendant = "IDREF"
дел
input
. Всплывающее окно со списком
Роль Атрибут Элемент Использование список
див
Определяет элемент как список
. вариант
дел
опция
.
. aria-selected = "true"
ли
aria-activedescendant
. Исходный код JavaScript и CSS
Исходный код HTML
Шаблон проектирования Combobox в WAI-ARIA Authoring Practices 1.2
Как установить значение по умолчанию для элемента HTML?
Параметр с атрибутом ‘selected’ будет отображаться по умолчанию в раскрывающемся списке.
<
html
>
<
голова
>
>
установить значение по умолчанию для <
выбрать
> элемент
title
>
head
>
<
корпус
>
<
h2
стиль
=
«цвет: зеленый»
> GeeksforGeeks
h2
>
<
b
>
Как установить значение по умолчанию
90 006
значение для элемента HTML <
select
>?
b
>
<
p
> По умолчанию будет выбран вариант «Стартер»
p
>
<
p
> Выберите свой план ниже:
p
>
<
выберите
имя
=
«план»
id
=
«план»
>
<
опция
значение
=
«бесплатно»
> Бесплатно
опция
>
<
опция
значение
=
«стартер»
выбран> Стартер
опция
>
9 0021
<
опция
значение
=
«профессиональный»
> Профессиональный
опция
>
<
опция
значение
=
«корпоративный»
> Корпоративный
опция
>
выберите
>
корпус
>
html
>
Перед щелчком по списку:
<
html
>
<
голова
>
>
Установите значение по умолчанию для <
select
> element
title
>
head
>
<
корпус
>
<
h2
стиль
=
«цвет: зеленый»
> GeeksforGeeks
h2
>
<
b
> Как установить значение по умолчанию для
HTML <
select
> element?
b
>
<
p
> Выбор варианта будет отображаться по умолчанию.
p
>
<
p
> Выберите план ниже:
p
>
<
выберите
имя
=
«план»
id
=
«план»
>
<
опция
значение
=
«нет»
выбрано отключено скрыто>
Выберите опцию
опцию
>
<
опцию
значение
=
«бесплатно»
> Бесплатно
опция
>
<
опция
значение
=
9 0020 «стартер» > Стартер
опция
>
<
опция
значение
=
«профессиональный»
> Профессиональный
опция
>
<
опция
значение
=
«корпоративный»
> Корпоративный
опция
>
выберите
>
body
>
html
>
Перед щелчком по списку: Выпадающие списки со списком - приложения Win32
В этой статье
Это правильный контроль?
Шаблоны использования
Использование Пример Раскрывающийся список стандартный раскрывающийся список с фиксированным набором предопределенных значений. при закрытии виден только выбранный элемент. когда пользователи нажимают кнопку раскрывающегося списка, становятся видимыми все параметры. чтобы изменить значение, пользователи открывают список и щелкают другое значение.
в этом примере список находится в нормальном состоянии.
В этом примере список раскрывается. Раскрывающийся список предварительного просмотра раскрывающийся список, который предварительно просматривает результаты выбора, чтобы помочь пользователям сделать выбор.
В этих примерах раскрывающиеся списки предварительно просматривают результаты выбора. Редактируемый раскрывающийся список раскрывающийся список со списком, который позволяет пользователям вводить значение, которого нет в раскрывающемся списке.
Примеры редактируемого раскрывающегося списка в режимах редактирования и раскрывающегося списка.
Используйте этот элемент управления, если вы хотите придать гибкость текстовому полю, но при этом хотите помочь пользователям, предоставив удобный список возможных вариантов. Редактируемые списки обычное поле со списком, которое позволяет пользователям вводить значение, которого нет в постоянно видимом списке.
В этих примерах всегда отображаются редактируемые списки.
Этот элемент управления - лучший выбор, чем редактируемый раскрывающийся список, когда важно побудить пользователей просмотреть альтернативные варианты или предложить изменения. Указания
Общий
Презентация
Раскрывающиеся списки
Раскрывающиеся списки предварительного просмотра
Комбинированные блоки
Значения по умолчанию
Подсказки
Рекомендуемый размер и шаг
Этикетки
Документация
HTML · GitHub
Поле со списком HTML · GitHub
Вы не можете выполнить это действие в настоящее время. ->