Html поле со списком: Поле со списком | htmlbook.ru

Содержание

Поле со списком | 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, обновить тот пост. Однако, я не буду этого делать, а напишу этот вот пост отдельно. Сейчас поймете почему.

Итак, оказывается:

  1. Word не желает нормально работать с текстовыми полями со списками из Writer (неудивительно впрочем).
  2. В самом Word есть несколько типов полей со списками, я насчитал ТРИ.
  3. Нормальный  (читай, нужный мне) эффект даёт одна кнопка из трёх.

Итак, скриншотики с комментариями ниже:

Перво наперво, в Word по умолчанию почему-то скрыта вкладка «Разработчик», в которой все и делается:

Вот она, крайняя справа. Активируется она в настройках офиса от микрософта. К чему такая «забота» о пользователях — непонятно.

Теперь та самая кнопка, которая сделает нам хорошо в плане добавления поля со списком заподлицо с текстом:

Вот она подсвечена. Ставим курсор в нужное место в тексте, нажимаем на волшебную кнопку, получаем вот такую штуку:

А вот диалог «Свойства», который вызывается, внезапно, кнопкой «Свойства», в котором происходит наполнение списка желаемым текстом:

Жмём кнопку «Добавить», добавляем нужный текст, жмём кнопку «ОК». Повторить столько раз, сколько вариантов вам требуется. Закрываем диалог, нажатием на «ОК» в нижней части диалога.

И вот так в итоге получается вид поля в документе:

Выбираете нужный вариант и он заменяет собой предыдущий. Строка текста соответственно вставленному варианту раздвинется или сожмется. Разрывов не будет. Всё шоколадно. Текст и текст, не отличишь от соседнего.

Кстати, в таком поле после выбора варианта можно изменить ваш текст в поле вручную! И он таки останется до следующей замены.

Теперь по поводу ещё вставки полей, те самые три кнопки из ларца, одинаковы с лица:

Верхняя кнопка — это та самая нужная нам кнопка по вставке удобных, современных, стильных, модных, молодёжных полей. Кнопка в середине — это как раз текстовое поле, аналогичное по своему внешнему виду и функциям таковому во Writer, однако его работа вызвала у меня удивление…ну, оно не работало у меня просто. Нижняя кнопка вставляет поле со списком, однако оно выглядит чужеродно, как элемент управления на форме (собственно это он и есть, да), а не как составная часть текста. Зачем так сделано? Возможно, ну я надеюсь, что кто-то этим пользуется.

Добавление поля со списком — InfoPath

Поле со списком — это текстовое поле, к которому также прикреплен список. С помощью этого элемента управления пользователи могут выбрать в списке предопределенное значение или ввести в текстовое поле собственное. Список скрыт, пока пользователь не щелкнет стрелку рядом с полем.

В этой статье

Использование поля со списком

Используйте поле со списком, если вы хотите:

  • позволить пользователям выбирать предопределенный вариант из списка или вводить собственное значение;

  • по умолчанию скрывать значения списка в форме;

  • отображать значения, полученные из фиксированного списка, источник данных шаблона формы или внешнего источника данных, например базы данных или списка Microsoft Windows SharePoint Services.

На рисунке ниже пользователь классифицирует расходы в форме отчета о расходах, выбирая значение в поле со списком. Если необходимое значение не отображается, его можно самостоятельно ввести. В этом примере пользователь вводит строку Телефон/факс.

После вставки поля со списком в шаблон формы необходимо указать значения, которые вы хотите использовать в нем. В противном случае при щелчке стрелки рядом с полем будет открываться пустой список. В диалоговом окне Свойства поля со списком вы можете ввести записи самостоятельно или настроить поле со списком на получение записей из базы данных или другого источника.

Связанные элементы управления

В InfoPath предусмотрены элементы управления, похожие на поля со списком, но предназначенные для других целей. Чтобы определить, какой из элементов управления лучше всего подходит для вашего шаблона формы, изучите список ниже.

Список.    Как и поле со списком, обычный список позволяет пользователям выбирать предопределенные варианты, однако ввод собственных значений при этом невозможен. Кроме того, в обычном списке сразу отображаются все элементы, тогда как в поле со списком они скрыты, пока пользователь не щелкнет стрелку. Если вы хотите предложить пользователям большое количество вариантов, обычные списки могут занимать слишком много места в шаблоне формы. В этом случае лучше использовать раскрывающийся список или поле со списком.

Раскрывающийся список.    Как и поле со списком, раскрывающийся список предназначен для выбора предопределенного значения, по умолчанию скрытого в форме. Тем не менее, в раскрывающийся список нельзя вводить собственные варианты, как в поле со списком.

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

Переключатели.    Как и поля со списком, группы переключателей позволяют пользователям выбирать взаимоисключающие значения, однако в этом случае для выбора требуется щелкнуть небольшой кружок, а не элемент в списке.

К началу страницы

Взаимодействие с пользователем

Поля со списком внешне похожи на раскрывающиеся списки, однако в них при необходимости можно вводить собственные значения. Если при создании поля со списком вы вручную ввели в диалоговом окне Свойства поля со списком собственные значения, в качестве записи поля со списком по умолчанию в InfoPath отобразится текст «Выбрать или ввести…». Благодаря этому пользователи смогут понять, что возможны оба действия. Если значения поля со списком взяты из другого элемента формы или в дополнительном источнике данных, текст «Выбрать или ввести…» опускается.

При первом открытии формы элементы поля со списком скрыты. Чтобы отобразить их, пользователю требуется щелкнуть стрелку справа от поля со списком. После этого он может выбрать необходимый вариант.

Если необходимый элемент отсутствует в списке, пользователь может щелкнуть в поле и ввести значение самостоятельно.

К началу страницы

Совместимость

В InfoPath вы можете создать шаблон формы с поддержкой веб-браузера. При оформлении таких шаблонов поля со списком будут недоступны на панели задач Элементы управления, поскольку они не отображаются в веб-браузерах.

К началу страницы

Добавление поля со списком

Действия для вставки поля со списком немного отличаются в зависимости от того, разрабатываете ли вы шаблон формы с нуля или используете в качестве его основы базу данных или другой внешний источник данных.

На следующем рисунке показано, как выглядит поле со списком, выбранное в режиме конструктора.

Элементы управления могут быть связанными или свободными. Если элемент управления связан, он подключен к полю или группе в источнике данных, поэтому данные, вводимые в элемент управления, сохраняются в XML-файле самой формы. Когда элемент управления является свободным, он не подключен к полю или группе, а данные, вводимые в него, не сохраняются. Если выбрать элемент управления или навести на него указатель мыши, в его правом верхнем углу , отобразится текст и значок привязки. В тексте указаны группа или поле в источнике данных, к которым привязан элемент управления. Значок указывает на то, правильно ли элемент управления привязан к полю или группе. Если привязка правильная, выводится зеленый значок. Если с привязкой что-то не так, вы увидите синий или красный значок.

Источник данных для шаблона формы состоит из полей и групп, которые отображаются в иерархическом представлении в области задач Источник данных. Поля со списком всегда привязаны к полям. В приведенном ниже примере поле со списком Категория в шаблоне формы привязано к полю категория в области задач Источник данных.

При создании нового пустого шаблона формы по умолчанию устанавливается флажок Автоматически создавать источник данных в области задач Элементы управления. Это позволяет InfoPath автоматически создавать поля и групп в источнике данных по мере добавления элементов управления в шаблон формы. Эти поля и группы представлены в виде значков папок и файлов в области задач Источник данных.

Если структура шаблона формы основана на существующем XML-файле, базе данных или веб-службе, InfoPath наследует поля и группы в области задач Источник данных из существующего источника данных.

Добавление поля со списком

  1. Поместите курсор в то место шаблона формы, куда вы хотите вставить элемент управления.

  2. Если область задач Элементы управления не отображается, щелкните Другие элементы управления в меню Вставка или нажмите клавиши ALT+I, C.

  3. В области задач Элементы управления сделайте одно из следующего:

    • Чтобы автоматически создать поле в источнике данных, привязанном к списку, установите флажок Автоматически создавать источник данных.

    • Чтобы привязать список к существующему полю, снимите флажок Автоматически создавать источник данных.

      Примечание: Если флажок недоступен, источник данных заблокирован. Например, если вы создали структуру шаблона формы на основе схемы XML, возможно, через InfoPath не удастся добавить новые поля или группы в источник данных. Это ограничение помогает предотвратить случайное внесение в схему изменений, которые могут сделать ее недопустимой.

  4. В разделе Вставить элементы управления щелкните Поле со списком.

  5. Если вы сняли флажок Автоматически создавать источник данных на шаге 3, выберите в диалоговом окне Привязка поля со списком поле, к которому вы хотите привязать список.

  6. Чтобы добавить метку к элементу управления, введите сверху или слева от него текст, за которым следует двоеточие (:).

  7. Чтобы задать значения, которые вы хотите использовать в качестве записей списка, дважды щелкните поле со списком.

  8. Откройте вкладку Данные.

  9. Заполните поле со списком одним из описанных ниже способов.

    Ввод значений списка вручную

    Этот вариант удобен, если у вас есть ограниченный набор значений, которые не должны существенно изменяться в будущем. Если значения изменятся, потребуется опубликовать обновленную версию шаблона формы, чтобы пользователи могли просматривать и использовать новые элементы списка.

    1. Нажмите кнопку Добавить.

    2. В поле Значение введите текст, который вы хотите сохранять, если пользователь выбирает эту запись.

    3. В поле Отображаемое имя введите текст, который вы хотите отобразить для этой записи, и нажмите кнопку ОК.

    4. Повторите действия 1–3 для каждой записи, которую требуется добавить в список.

    5. Чтобы проверить изменения, нажмите кнопку Просмотр на стандартной панели инструментов или нажмите клавиши CTRL+SHIFT+B.

    Использование значений из другой части формы

    Этот вариант удобен, если вы хотите, чтобы значения в списке изменялись в зависимости от того, какие другие значения пользователи ввели в форму.

    1. В разделе Элементы списка щелкните Подставить значения из источника данных формы.

      Элементы в списке должны быть связаны с конкретной повторяющейся группой или повторяющемся полем шаблона формы.

    2. Нажмите кнопку Выбрать XPath рядом с полем Элементы, а затем в диалоговом окне Выбор поля или группы щелкните повторяющееся поле или повторяющуюся группу с полями, которые будут предоставлять значения для списка, и нажмите кнопку ОК.

    3. Нажмите кнопку Выбрать XPath рядом с полем Значение, щелкните поле, содержащее возможные значения для элементов списка, и нажмите кнопку ОК. Одно из этих значений будет сохранено в XML при выборе пользователем элемента в списке.

    4. Нажмите кнопку Выбрать XPath рядом с полем Отображаемое имя, щелкните поле, содержащее значения, которые выводятся в списке, и нажмите кнопку ОК.

      Совет: Чтобы в списке не было значений с одинаковыми отображаемыми именами, установите флажок Показывать только записи с уникальными отображаемыми именами.

    Использование значений из базы данных, веб-службы, XML-документа или сайта SharePoint

    Этот вариант удобен, если вы хотите, чтобы значения в списке регулярно обновлялись. Значения обычно хранятся в базе данных или другом внешнем источнике и извлекаются каждый раз при открытии формы.

    1. Щелкните Искать значения во внешнем источнике данных.

    2. Выполните одно из следующих действий:

      • Если вы уже добавили подключение к данным, щелкните его в поле Подключение к данным.

      • Чтобы добавить новое подключение к данным, нажмите кнопку Добавить, а затем следуйте инструкциям мастера подключения к данным.

        Элементы в списке должны быть связаны с конкретной повторяющейся группой или повторяющемся полем.

    3. Нажмите кнопку Выбрать XPath рядом с полем Элементы, а затем в диалоговом окне Выбор поля или группы щелкните поле или группу с полями, которые будут предоставлять значения для списка, и нажмите кнопку ОК.

    4. Нажмите кнопку Выбрать XPath рядом с полем Значение, щелкните поле, содержащее возможные значения для элементов списка, и нажмите кнопку ОК. Одно из этих значений будет сохранено в XML при выборе пользователем элемента в списке.

    5. Нажмите кнопку Выбрать 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. В общем случае у такого объекта могут быть следующие компоненты:

  1. Текст метки.
  2. Контейнер.
  3. Стрелка для раскрытия списка.
  4. Заполнитель.
  5. Полоса прокрутки.
  6. Меню списка.
  7. Элементы списка – опции, варианты выбора.
  8. Разделитель групп элементов.
  9. Выделенный элемент.
  10. Текст и оформление для обеспечения обратной связи.
Анатомия выпадающего списка

Давайте для начала разберём, какие бывают варианты полей с раскрывающимися списками.

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-элемент правилами доступности:

  1. Активное состояние выпадающего списка, включая метку, должно быть по высоте не меньше 44px.
  2. Каждая позиция в раскрывающемся меню должна быть по высоте не менее 44px с зазором между вариантами не менее 8px.
  3. Цвета должны соответствовать стандарту доступности AAA.
  4. Выпадающий список должен поддерживать состояние фокуса.
  5. Выпадающий список должен быть доступен без использования курсора (с помощью Tab).
  6. Если вы используете кастомный тип раскрывающего списка, убедитесь, что он может раскрываться вверх, когда он оказался на нижней границе области просмотра.

***

Надеемся, этот пост был для вас полезен. На proglib.io есть ещё много материалов, касающихся дизайна интерфейсов, к примеру:

HTML-тег выбора


Пример

Создайте раскрывающийся список с четырьмя вариантами:

Выбери машину:

<выбрать name = "cars">




Попробуй сам »

Дополнительные примеры «Попробуйте сами» ниже.


Определение и использование

Элемент чаще всего используется в форме для сбора пользовательского ввода.

Атрибут name необходим для ссылки данные формы после отправки формы (если вы опустите name , данные из раскрывающегося списка отправляться не будут).

Атрибут id необходим для связи раскрывающийся список с меткой.

Теги


Атрибуты событий

Тег с тегами:


Попробуй сам »

Связанные страницы

Ссылка на HTML DOM: выберите объект

Учебное пособие по CSS: стилизация форм


Настройки CSS по умолчанию

Нет.



HTML DOM Выбрать объект


Выбрать объект

Объект Select представляет элемент HTML , используя getElementById ():

Совет: Вы также можете получить доступ к объекту Select, выполнив поиск в коллекции элементов формы.

Создать объект выбора

Вы можете создать элемент



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);

мультиселектКомпонент.в этом();

Пример комбинированного списка только для выбора | WAI-ARIA Authoring Practices 1.2

Пример поля со списком только для выбора | Практика разработки WAI-ARIA 1.2

Следующий пример реализации шаблона проектирования ARIA для combobox демонстрирует виджет combobox с одним выбором, который функционально аналогичен элементу select HTML . В отличие от примеров редактируемых полей со списком, это поле со списком только для выбора не создается с элементом и не принимает произвольный ввод данных пользователем.Однако, как и в HTML закрывает список, но не перемещает фокус на вкладку. Этот шаблон соответствует поведению других комбинированных списков, а не собственному элементу в этом случае. Побег

  • Закрывает список.
  • Устанавливает визуальный фокус на поле со списком.
Стрелка вниз
  • Перемещает визуальный фокус к следующему параметру.
  • Если визуальный фокус находится на последнем параметре, визуальный фокус не перемещается.
Стрелка вверх
  • Перемещает визуальный фокус к предыдущему параметру.
  • Если визуальный фокус установлен на первом варианте, визуальный фокус не перемещается.
Alt + стрелка вверх
  • Устанавливает значение для содержимого выбранной опции в списке.
  • Закрывает список.
  • Устанавливает визуальный фокус на поле со списком.
Дом Перемещает визуальный фокус к первому варианту. Конец Перемещает визуальный фокус на последнюю опцию. PageUp Перемещает визуальный фокус на 10 пунктов вверх (или к первому варианту). PageDown Перемещает визуальный фокус вниз на 10 вариантов (или к последнему варианту). Печатаемые символы
  • Сначала открывает список, если он еще не отображается, а затем перемещает визуальный фокус на первый вариант, соответствующий набранному символу.
  • Если несколько клавиш набираются в быстрой последовательности, визуальный фокус перемещается на первый вариант, который соответствует полной строке.
  • Если один и тот же символ вводится последовательно, визуальный фокус циклически переключается между вариантами, начинающимися с этого символа

Роль, свойство, состояние и атрибуты Tabindex

Пример поля со списком на этой странице реализует следующие роли, состояния и свойства ARIA.Информация о других способах применения ролей, состояний и свойств ARIA доступна в разделе Раздел ролей, состояний и свойств шаблона проектирования combobox.

Поле со списком

Роль Атрибут Элемент Использование
поле со списком дел Обозначает ввод как поле со списком.
aria-labelledby = "# IDREF" дел Обозначает элемент, который маркирует поле со списком.
aria-controls = "# IDREF" дел Обозначает элемент, который служит всплывающим окном.
aria-extended = "false" дел Указывает, что всплывающий элемент не отображается .
aria-extended = "true" дел Указывает, что всплывающий элемент отображается как .
aria-activedescendant = "IDREF" дел
  • Когда опция в списке визуально обозначена как имеющая фокус клавиатуры, относится к этой опции.
  • При нажатии клавиш навигации, таких как Стрелка вниз , JavaScript изменяет значение.
  • Позволяет вспомогательным технологиям узнать, какой элемент приложение считает сфокусированным, в то время как фокус DOM остается на элементе input .
  • Для получения дополнительной информации об этой технике управления фокусом см. Использование aria-activedescendant для управления фокусом.

Всплывающее окно со списком

Роль Атрибут Элемент Использование
список див Определяет элемент как список .
вариант дел
  • Определяет элемент как список опция .
  • Текстовое содержимое элемента обеспечивает доступное имя опции .
aria-selected = "true" ли
  • Указывается для параметра в списке, когда он визуально выделен как выбранный.
  • Происходит только тогда, когда на параметр в списке ссылается aria-activedescendant .

Исходный код JavaScript и CSS

Исходный код HTML

  
Шаблон проектирования Combobox в WAI-ARIA Authoring Practices 1.2

Как установить значение по умолчанию для элемента HTML?

Тег выбора в HTML используется для создания раскрывающегося списка опций, которые можно выбрать .Тег option содержит значение, которое будет использоваться при выборе.

Значение по умолчанию для элемента select может быть установлено с помощью атрибута ‘selected’ требуемой опции. Это логический атрибут.
Параметр с атрибутом ‘selected’ будет отображаться по умолчанию в раскрывающемся списке.

Синтаксис:


 

Пример-1: Использование выбранного атрибута.

< html >

< голова >

>

установить значение по умолчанию для < выбрать > элемент

title >

head >

< корпус >

< h2 стиль = «цвет: зеленый» > GeeksforGeeks h2 >

< b >

Как установить значение по умолчанию 90 006

значение для элемента HTML < select >?

b >

< p > По умолчанию будет выбран вариант «Стартер» p >

< p > Выберите свой план ниже: p >

< выберите имя = «план» id = «план» >

< опция значение = «бесплатно» > Бесплатно опция >

< опция значение = «стартер» выбран> Стартер опция >

9 0021 < опция значение = «профессиональный» > Профессиональный опция >

< опция значение = «корпоративный» > Корпоративный опция >

выберите >

корпус >

html >

Вывод:
Перед щелчком по списку:


После щелчка по списку:

Пример 2: Это также можно использовать для добавления сообщения типа «Выберите параметр» в списке.Эта опция будет иметь атрибуты hidden и disabled в дополнение к selected.

< html >

< голова >

>

Установите значение по умолчанию для < select > element

title >

head >

< корпус >

< h2 стиль = «цвет: зеленый» > GeeksforGeeks h2 >

< b > Как установить значение по умолчанию для

HTML < select > element? b >

< p > Выбор варианта будет отображаться по умолчанию. p >

< p > Выберите план ниже: p >

< выберите имя = «план» id = «план» >

< опция значение = «нет» выбрано отключено скрыто>

Выберите опцию

опцию >

< опцию значение = «бесплатно» > Бесплатно опция >

< опция значение = 9 0020 «стартер» > Стартер опция >

< опция значение = «профессиональный» > Профессиональный опция >

< опция значение = «корпоративный» > Корпоративный опция >

выберите >

body >

html >

Вывод:
Перед щелчком по списку:

После нажатия list:

HTML - это основа веб-страниц, используется для разработки веб-страниц путем структурирования веб-сайтов и веб-сайтов. pps.Вы можете изучить HTML с нуля, следуя этому руководству по HTML и примерам HTML.

Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные концепции конкурентного программирования с помощью веб-дизайна для начинающих | HTML курс.


Выпадающие списки со списком - приложения Win32

  • 13 минут на чтение

В этой статье

Примечание

Это руководство по дизайну было создано для Windows 7 и не обновлялось для новых версий Windows.Большая часть рекомендаций по-прежнему применима в принципе, но презентация и примеры не отражают наши текущие рекомендации по проектированию.

С помощью раскрывающегося списка или поля со списком пользователи делают выбор из списка взаимоисключающих значений. Пользователи могут выбрать один и только один вариант. В стандартном раскрывающемся списке пользователи ограничены выбором в списке, но с помощью поля со списком они могут ввести вариант, которого нет в списке.

Типичное поле со списком.

При чтении этой статьи важно понимать следующие термины:

  • Стандартное поле со списком - это поле, содержащее список из нескольких элементов, при этом несколько элементов видно.
  • Раскрывающийся список - это список, в котором выбранный элемент всегда виден, а остальные видны по запросу при нажатии кнопки раскрывающегося списка.
  • Поле со списком представляет собой комбинацию стандартного списка или раскрывающегося списка и редактируемого текстового поля, что позволяет пользователям вводить значение, которого нет в списке.
    • Редактируемый раскрывающийся список представляет собой комбинацию раскрывающегося списка и редактируемого текстового поля.
    • Редактируемый список представляет собой комбинацию стандартного списка и редактируемого текстового поля.

Примечание

Рекомендации по верстке представлены в отдельной статье.

Это правильный контроль?

Чтобы принять решение, рассмотрите следующие вопросы:

  • Используется ли элемент управления для выбора одного варианта из списка взаимоисключающих значений? Если нет, используйте другой элемент управления. Чтобы выбрать несколько вариантов, используйте вместо них стандартный список с множественным выбором, список флажков, построитель списков или список добавления / удаления.
  • Есть ли варианты команд? Если да, используйте вместо этого кнопку меню или кнопку разделения.Используйте раскрывающиеся списки и поля со списком для объектов (существительные) или атрибутов (прилагательные), но не команд (глаголов).
  • Представлены ли в списке данные, а не параметры программы? В любом случае, раскрывающийся список или поле со списком являются подходящим выбором. Напротив, радиокнопки подходят только для небольшого количества опций программы.

Раскрывающиеся списки

  • Есть ли вариант по умолчанию, который рекомендуется для большинства пользователей в большинстве ситуаций? Неужели видеть выбранный вариант гораздо важнее, чем видеть альтернативы? Рассмотрите возможность использования раскрывающегося списка, если вы не хотите побуждать пользователей вносить изменения, скрывая альтернативы.Если нет, подумайте о переключателях, списке с одним выбором или редактируемом поле со списком, в которых больше внимания уделяется альтернативным вариантам.

    В этом примере наивысшее качество цвета - лучший выбор для большинства пользователей, поэтому раскрывающийся список - хороший выбор, чтобы преуменьшить количество альтернатив.

  • Хотите обратить внимание на вариант? Если это так, подумайте о переключателях, списке с одним выбором или редактируемом списке, которые, как правило, привлекают больше внимания, занимая больше места на экране.Поскольку раскрывающиеся списки компактны, они являются хорошим выбором для вариантов, которые вы хотите недооценивать.

  • Требуется ли экранное пространство? Если это так, используйте раскрывающийся список, поскольку используемое пространство на экране фиксировано и не зависит от количества вариантов.

  • Есть ли в окне другие раскрывающиеся списки? Если да, рассмотрите возможность использования раскрывающегося списка для единообразия.

Редактируемые раскрывающиеся списки

В дополнение к принципам, только что предусмотренным для раскрывающихся списков, также применяются следующие правила:

  • Ограничены ли возможные варианты? Если да, используйте вместо этого обычный раскрывающийся список.Поля со списком предназначены для неограниченного ввода, в котором пользователям может потребоваться ввести значение, которого в данный момент нет в списке. Поскольку ввод не ограничен, если пользователи вводят недопустимый текст, вы должны обработать ошибку сообщением об ошибке.

  • Можете ли вы заранее перечислить наиболее вероятные варианты ? В противном случае используйте текстовое поле.

  • Используется ли раскрывающийся список для перечисления предыдущих введенных пользователем данных? Если пользователям не нужно просматривать полный список ранее введенных данных, используйте текстовое поле с опцией автозаполнения.

    В этом примере пользователям может потребоваться просмотреть свой предыдущий ввод, поэтому редактируемый раскрывающийся список - хороший выбор.

    В этом примере текстовое поле с автозаполнением - хороший выбор.

  • Потребуется ли пользователям помощь в выборе допустимых значений? Если да, используйте вместо этого текстовое поле с кнопкой «Обзор».

    В этом примере пользователи могут щелкнуть «Кому», чтобы помочь им выбрать допустимые значения.

  • Важно ли побуждать пользователей пересматривать альтернативные варианты или предлагать изменения? Если да, рассмотрите возможность использования вместо этого редактируемого списка.С редактируемым раскрывающимся списком пользователи не будут знать об альтернативах, пока список не будет удален.

  • Нужно ли пользователям быстро находить элемент в большом списке? (только Win32) Если да, используйте поле со списком, потому что пользователи могут выбрать элемент, введя его полное имя. Напротив, раскрывающийся список Win32 выбирает элементы только по последнему набранному символу (поэтому ввод «июн» в список месяцев будет соответствовать ноябрю, а не июню). В этом случае используйте поле со списком, даже если возможные варианты ограничены.

Редактируемые списки

  • Ограничены ли возможные варианты? Если да, используйте вместо этого список с одним выбором или обычный раскрывающийся список. Поля со списком предназначены для неограниченного ввода, когда пользователям может потребоваться ввести значение, которого в данный момент нет в списке. Поскольку ввод не ограничен, если пользователи вводят недопустимый текст, вы должны обработать ошибку сообщением об ошибке.
  • Можете ли вы заранее перечислить наиболее вероятные варианты? Если нет, используйте текстовое поле.
  • Важно ли побуждать пользователей пересматривать альтернативные варианты или предлагать изменения? В противном случае рассмотрите возможность редактирования раскрывающегося списка.
  • Хотите обратить внимание на вариант? В противном случае рассмотрите возможность редактирования раскрывающегося списка. Поскольку раскрывающиеся списки компактны, они являются хорошим выбором для вариантов, которые вы хотите недооценивать.
  • Место на экране дорого? Если это так, используйте редактируемый раскрывающийся список, потому что используемое пространство экрана фиксировано и не зависит от количества вариантов.

Для раскрывающихся списков количество элементов в списке не является фактором при выборе элемента управления , потому что они масштабируются от тысяч элементов до одного. Редактируемые раскрывающиеся списки масштабируются от тысяч элементов до нуля, поскольку пользователи могут вводить значение, которого нет в списке. Поскольку для данных можно использовать раскрывающиеся списки, количество элементов может быть неизвестно заранее и, возможно, не может быть гарантировано. Всегда включайте как минимум три элемента в редактируемые списки, чтобы оправдать дополнительное пространство на экране.

Шаблоны использования

Выпадающие списки и поля со списком имеют несколько шаблонов использования:

Использование Пример
Раскрывающийся список стандартный раскрывающийся список с фиксированным набором предопределенных значений.
при закрытии виден только выбранный элемент. когда пользователи нажимают кнопку раскрывающегося списка, становятся видимыми все параметры. чтобы изменить значение, пользователи открывают список и щелкают другое значение.

в этом примере список находится в нормальном состоянии.

В этом примере список раскрывается.
Раскрывающийся список предварительного просмотра раскрывающийся список, который предварительно просматривает результаты выбора, чтобы помочь пользователям сделать выбор.

В этих примерах раскрывающиеся списки предварительно просматривают результаты выбора.
Редактируемый раскрывающийся список раскрывающийся список со списком, который позволяет пользователям вводить значение, которого нет в раскрывающемся списке.

Примеры редактируемого раскрывающегося списка в режимах редактирования и раскрывающегося списка.
Используйте этот элемент управления, если вы хотите придать гибкость текстовому полю, но при этом хотите помочь пользователям, предоставив удобный список возможных вариантов.
Редактируемые списки обычное поле со списком, которое позволяет пользователям вводить значение, которого нет в постоянно видимом списке.

В этих примерах всегда отображаются редактируемые списки.
Этот элемент управления - лучший выбор, чем редактируемый раскрывающийся список, когда важно побудить пользователей просмотреть альтернативные варианты или предложить изменения.

Указания

Общий

  • Не используйте изменение раскрывающегося списка или поля со списком на :
    • Выполнять команды.
    • Отображение других окон, например диалогового окна, для сбора дополнительных данных.
    • Динамически отображать другие элементы управления, связанные с выбранным элементом управления (программы чтения с экрана не могут обнаружить такие события).

Презентация

  • Сортировка элементов списка в логическом порядке , например группировка тесно связанных параметров вместе, размещение наиболее общих параметров в первую очередь или использование алфавитного порядка. Сортируйте имена в алфавитном порядке, числа в числовом порядке и даты в хронологическом порядке. Списки из 12 или более элементов следует отсортировать в алфавитном порядке, чтобы их было легче найти.

    Правильно:

    В этом примере элементы списка отсортированы по их пространственному соотношению.

    Неправильно:

    В этом примере так много элементов списка, что их нужно отсортировать в алфавитном порядке.

    Правильно:

    В этом примере элементы списка отсортированы в алфавитном порядке, за исключением параметра, который представляет все элементы.

  • Поместите параметры, которые представляют все или нет, в начало списка, независимо от порядка сортировки оставшихся элементов.

  • Заключите метаопции в круглые скобки.

    В этом примере «(Нет)» является метаопцией, потому что это недопустимое значение для выбора, а скорее описывает, что сама опция не используется.

  • При отключении раскрывающегося списка или поля со списком также отключите все связанные метки и командные кнопки.

Раскрывающиеся списки

  • Когда один раскрывающийся список используется для изменения представления связанного элемента управления, изменяет представление сразу при выборе вместо того, чтобы требовать отдельной кнопки команды. Используйте отдельную командную кнопку, только если для рендеринга списка требуется значительное время. Однако для этой цели предпочтительнее использовать заголовки списков и кнопки меню.

  • Нет пустых элементов списка используйте метаопции вместо . Пользователи не знают, как интерпретировать пустые элементы, в то время как значение мета-параметров является явным.

    Правильно:

    Неправильно:

    В неверном примере значение пустой опции неясно.

Раскрывающиеся списки предварительного просмотра

  • Используйте предварительный просмотр в элементах списка, когда лучше показать с изображениями, чем описывать, используя только текст.

    В этом примере предварительный просмотр объясняет параметры намного лучше, чем просто текст.

  • Не используйте ненужные, бесполезные значки в превью .

    Неправильно:

    В этом примере значки предварительного просмотра не нужны, потому что они не передают никакой информации.

Комбинированные блоки

  • По возможности ограничивайте длину вводимого текста. Например, если допустимый ввод - число от 0 до 999, используйте поле со списком, которое ограничено тремя символами.

  • Если существует много возможных вариантов, сфокусируйте содержимое списка на наиболее вероятных вариантах . Поскольку пользователи могут вводить значения, которых нет в списке, в полях со списком не обязательно перечислять все варианты, а только вероятные варианты или репрезентативную выборку.

    В этом примере не указаны многие допустимые варианты, например 15 или шрифты половинного размера, например 9,5.

Значения по умолчанию

  • Выберите самый безопасный (для предотвращения потери данных или доступа к системе) и наиболее безопасный вариант по умолчанию. Если безопасность не являются факторами, выберите наиболее вероятный или удобный вариант.
    • Исключение: Отображать пустое значение по умолчанию, если элемент управления представляет свойство в смешанном состоянии, что происходит при отображении свойства для нескольких объектов, у которых нет одинаковых параметров.

Подсказки

Подсказка - это метка или короткая инструкция, помещенная в редактируемый раскрывающийся список в качестве значения по умолчанию. В отличие от статического текста, подсказки исчезают с экрана, когда пользователь вводит что-то в поле со списком или получает фокус ввода.

Типичное приглашение.

Использовать подсказку, когда:

  • Пространство на экране настолько ограничено, что использование меток или инструкций нежелательно, например, на панели инструментов.
  • Подсказка в первую очередь предназначена для компактного определения цели списка.Это не должна быть важная информация, которую пользователи должны видеть при использовании поля со списком.

Не используйте подсказки только для того, чтобы побудить пользователей выбрать что-то из списка или нажимать кнопки. Например, такие запросы, как «Выберите параметр» или «Введите имя файла, а затем нажмите« Отправить », не нужны.

При использовании подсказок:

  • Нарисуйте текст подсказки серым курсивом, а настоящий текст - обычным черным. Текст подсказки не следует путать с реальным текстом.
  • Сохраняйте краткий текст подсказки.Вы можете использовать фрагменты вместо полных предложений.
  • Используйте заглавные буквы в стиле предложения.
  • Не используйте конечную пунктуацию или многоточие.
  • Текст приглашения не должен редактироваться и должен исчезать, когда пользователи щелкают или вкладывают в текстовое поле.
    • Исключение: Запрос отображается, если текстовое поле имеет фокус ввода по умолчанию, и исчезает только после того, как пользователь начинает вводить текст.
  • Текст приглашения восстанавливается, если текстовое поле все еще пусто, когда он теряет фокус ввода.

Неправильно:

В этом примере место на экране не в приоритете; после заполнения редактируемого раскрывающегося списка пользователям становится сложно вспомнить, для чего он нужен; а текст подсказки можно редактировать и рисовать так же, как и настоящий текст.

Рекомендуемый размер и шаг

Рекомендуемый размер и интервал для раскрывающихся списков и полей со списком.

  • Выберите ширину, подходящую для самых длинных действительных данных. Выпадающие списки нельзя прокручивать по горизонтали, поэтому пользователи могут видеть только то, что отображается в элементе управления. (Обратите внимание, однако, что в полях со списком может быть включена функция AutoScroll.)
  • Включите дополнительные 30 процентов (до 200 процентов для более короткого текста) для любого текста (но не чисел), который будет локализован.
  • Выберите длину списка, исключающую ненужную вертикальную прокрутку. Поскольку раскрывающиеся списки отображаются по запросу, их списки должны содержать до 30 элементов.Редактируемые списки (те, у которых нет раскрывающейся кнопки) должны отображать от 3 до 12 элементов.

Этикетки

Контрольные этикетки

  • Напишите метку как слово или фразу, а не как предложение, и завершите его двоеточием. Исключения:

    • Редактируемые раскрывающиеся списки с подсказками, расположенными там, где место ограничено.
    • Если раскрывающийся список или поле со списком подчиняется переключателю или флажку и начинается с его метки, заканчивающейся двоеточием, не помещайте дополнительную метку в элемент управления.
  • Назначьте уникальный ключ доступа для каждой метки. Инструкции см. В разделе Клавиатура.

  • Используйте заглавные буквы в стиле предложения.

  • Разместите метку слева от элемента управления или над ним и выровняйте метку по левому краю элемента управления. Если метка находится слева, выровняйте текст метки по вертикали с текстом элемента управления.

    Правильно:

    В этом примере метка правильно выровнена с контрольным текстом.

    Неправильно:

    В этом примере метка неправильно выровнена с контрольным текстом.

  • Вы можете указать единицы измерения (секунды, соединения и т. Д.) В скобках после метки.

  • Не делайте содержимое раскрывающегося списка или поля со списком (или его метки единиц измерения) частью предложения, потому что это невозможно локализовать.

Текст опции

  • Присвойте каждой опции уникальное имя.
  • Используйте заглавные буквы в стиле предложения, если только элемент не является существительным собственным.
  • Напишите метку как слово или фразу, а не как предложение, и не используйте конечную пунктуацию.
  • Используйте параллельную формулировку и старайтесь, чтобы длина была примерно одинаковой для всех вариантов.

Текст инструкции

  • Если вам нужно добавить инструктивный текст о раскрывающемся списке или поле со списком, добавьте его над меткой. Используйте полные предложения с окончанием пунктуации.

  • Используйте заглавные буквы в стиле предложения.

  • Дополнительная полезная, но не нужная информация должна быть краткой. Поместите эту информацию в круглые скобки между меткой и двоеточием или без скобок под элементом управления.

    В этом примере показана дополнительная информация, размещенная под элементом управления.

Документация

При обращении к раскрывающимся спискам:

  • Используйте точный текст метки, включая его регистр, но не используйте подчеркивание или двоеточие клавиши доступа; включите либо список, либо поле, в зависимости от того, что яснее.
  • Для параметров списка используйте точный текст параметра, включая его регистр.
  • В документации по программированию и другой технической документации используйте раскрывающиеся списки как раскрывающиеся списки. В любом другом месте используйте либо список, либо поле, в зависимости от того, что понятнее.
  • Для описания взаимодействия с пользователем используйте щелчок.
  • По возможности отформатируйте метку и список параметров, выделив полужирным шрифтом. В противном случае заключите метку и параметры в кавычки, только если это необходимо, чтобы избежать путаницы.

Пример: в списке Размер шрифта щелкните Крупные шрифты .

При обращении к полям со списком:

  • Используйте точный текст метки, включая его регистр, но не используйте подчеркивание или двоеточие клавиши доступа; включите поле слова.
  • Для параметров списка используйте точный текст параметра, включая его заглавные буквы.
  • В программировании и другой технической документации поля со списком называются полями со списком. В любом другом месте используйте коробку.
  • Для описания взаимодействия с пользователем используйте ввод.
  • По возможности отформатируйте метку и список параметров, выделив полужирным шрифтом.В противном случае заключите метку и параметры в кавычки, только если это необходимо, чтобы избежать путаницы.

Пример: в поле Font введите шрифт, который вы хотите использовать.

Поле со списком

HTML · GitHub

Поле со списком HTML · GitHub

Мгновенно делитесь кодом, заметками и фрагментами.

Поле со списком HTML

->
Вы не можете выполнить это действие в настоящее время.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *