Комбобокс ComboBox

Комбобокс — это поле ввода со списком подсказок.

Когда использовать

Комбобокс используют:

  • для выбора значения из справочника,
  • для добавления своего значения в справочник.

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

Комбобокс может работать в двух режимах — обычном и в режиме автокомплита.

Обычный режим — комбобокс со стрелкой

Комбобокс со стрелкой и плейсхолдером «Введите или выберите из списка»

Поле работает по аналогии с раскрывающимся списком — при клике в поле сразу появляется список всех вариантов. Об этом подсказывает стрелка и плейсхолдер.

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

Автокомплит — комбобокс без стрелки

Комбобокс без стрелки с плейсхолдером «Введите или выберите из списка»

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

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

Описание работы

Комбобокс со стрелкой

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

Пустой комбобокс со стрелкой и серым плейсхолдером «Введите или выберите из списка»

При фокусе плейсхолдер становится чуть светлее, открывается список вариантов.

Комбобокс в фокусе с посветлевшим плейсхолдером и открытым списком городов: «Архангельск», «Анапа», «Альметьевск», «Астрахань», «Алматы»

Когда курсор находится на списке, скроллинг страницы блокируется.

При вводе первого символа список фильтруется. Первый пункт в списке подсвечивается.

В комбобоксе введена буква «Е», в списке «Екатеринбург», «Ейск», «Елань», «Елец», «Ессентуки», первый пункт подсвечен серым

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

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

Комбобокс в фокусе со значением «Екатеринбург», список закрыт

При фокусе введённое значение выделяется, раскрывается список и скроллится до выбранного значения.

Комбобокс в фокусе: значение «Екатеринбург» выделено, в открытом списке подсвечен тот же пункт «Екатеринбург»

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

В комбобоксе введено «Екатеринфывф», под полем вместо списка серый текст «Не найдено»

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

Если введённое значение совпадает со значением из справочника, при потере фокуса это значение выбирается.

Сначала в комбобоксе введено «Екатеринбург» и в списке подсвечен единственный совпадающий пункт, затем поле без фокуса со значением «Екатеринбург»

Если ничего не нашлось, покажите ошибку.

Сначала в комбобоксе введено «Екатеринфывф» и под полем текст «Не найдено», затем после потери фокуса поле в красной рамке, под ним красный текст «Выберите значение из списка»

Если список не успел загрузиться, тоже покажите ошибку.

Сначала в комбобоксе введена буква «Е» и под полем спиннер с текстом «Загрузка», затем после потери фокуса поле в красной рамке, под ним красный текст «Выберите значение из списка»

Комбобокс без стрелки

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

Комбобокс без стрелки с подписью «Город» и плейсхолдером «Введите или выберите из списка»

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

Комбобокс без стрелки с введённой буквой «Е»: в списке пять городов от «Екатеринбург» до «Ессентуки», внизу серый текст «Показано 5 из 134 найденных городов. Уточните запрос, чтобы увидеть остальные»

Оптимальное количество строк в списке — 5. Если после фильтрации список может быть очень большим, это число можно увеличивать до 20.

Варианты использования

Составной список

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

Основное значение — короткое, ёмкое и уникальное.

В комбобоксе введено «66», в списке пять налоговых: слева код, в котором цифры «66» выделены жирным, справа название вида «ФНС Екатеринбурга, Верх-Исетский район»

После того как выбор сделан, показывайте дополнительное значение в поле серым цветом.

Комбобокс со значением «6658», за ним серым обрезанное название «ФНС Екатеринбурга, Верх-…»

Если оно полностью не входит, показывайте при наведении хинт.

Курсор мыши на комбобоксе «6658 ФНС Екатеринбурга, Верх-…», над полем тёмная подсказка с полным названием «ФНС Екатеринбурга, Верх-Исетский район»

При фокусе тултип исчезает.

Комбобокс в фокусе, подсказки над полем нет: в поле «6671», открыт список налоговых с кодами от 6658 до 6662, цифры «66» выделены жирным

Поиск по вхождению

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

Если слово начинается с кавычек, они не должны учитываться при поиске совпадения.

Чтобы понять, стоит ли использовать поиск по вхождению, задайте себе вопрос: точно ли пользователь знает начало строки? Если нет — используйте поиск по вхождению.

Подсвечивайте совпадения жирным начертанием.

В комбобоксе введено «Екатерин», в списке организаций и ИП совпадение выделено жирным в начале любого слова, в том числе после кавычек: ЕМУП «Екатеринбург», ИП Свободова Екатерина Петровна и другие

Избранные варианты

Если это уместно, предлагайте пользователю наиболее вероятные варианты ещё до начала ввода. Например, определение города по геопозиции или ip.

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

Комбобокс в фокусе: вверху списка «Москва», «Санкт-Петербург», «Екатеринбург», под разделительной чертой — «Архангельск» и «Анапа»

Если это комбобокс в режиме автокомплита, сразу по фокусу показывайте список из 3 — 5 вариантов с заголовком. Заголовок нужен, чтобы было понятно, что это не полный список.

Комбобокс без стрелки в фокусе, до ввода показан список с серым заголовком «Популярные города»: «Москва», «Санкт-Петербург», «Екатеринбург»

Справочники

Значения не из справочника

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

Комбобокс со значением «Йогурт с черносливом» в жёлтой рамке, под ним оранжевый текст «Товара нет в справочнике. Возможно, вы ошиблись»

Автоматическое добавление в справочник

Если пользователь сам наполняет справочник, то при вводе нового значения не показывайте текст «Нет совпадений». Добавляйте значение в список и при следующем заполнении предлагайте его наравне с остальными.

Комбобокс в фокусе с введённым значением «Йогурт с черносливом», списка под полем нет

Нет соответствий

Комбобокс без фокуса со значением «Йогурт с черносливом» в обычной серой рамке, без ошибки

Фокус потерян без выбора из справочника

Ручное добавление в справочник

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

Комбобокс в фокусе: в конце списка городов пункт «Добавить» с плюсом, на нём курсор мыши

По клику на него может открываться модальное окно, сайдпейдж или отдельная страница. Поле «Название» должно быть заполнено введённым пользователем в комбобокс текстом.

Прежде чем добавлять новую карточку, пользователь, скорее всего, захочет проверить, что такой ещё нет в списке. Он начнёт набирать текст в комбобоксе, и если не будет совпадений — последний пункт «Добавить» подсветится автоматически.

Дублируйте введённые символы в пункт «Добавить».

В комбобоксе введено «Ивдель», в списке один подсвеченный пункт с плюсом: Добавить «Ивдель»

Если в предыдущем состоянии поле теряет фокус, срабатывает валидация: поле красится в красный, показывается сообщение об ошибке.

Комбобокс со значением «Екатеринбург» в красной рамке, под ним красный текст «Добавьте значение в справочник или выберите другое значение из списка»

Подробнее — в гайде «Валидация».

Спиннер

Если обработка запроса для построения списка занимает дольше 0,3 секунды, показываем спиннер минимум 1 секунду.

Лоадер серый, не привлекающий слишком много внимания.

В комбобоксе введена буква «Е», под полем вместо списка серый спиннер и текст «Загрузка»

Если список уже открыт и при получении ответа возникла задержка — показываем спиннер справа, список до обновления остаётся в прежнем состоянии.

В комбобоксе введено «Екат», справа от поля спиннер с текстом «Загрузка», под полем прежний список: «Москва», «Санкт-Петербург», «Екатеринбург», «Архангельск»

Если происходит ошибка сервера, показываем сообщение.

В комбобоксе введена буква «Е», под полем красный текст «Что-то пошло не так» и пункт «Обновить» с круговой стрелкой

Нажатие Enter при пустом/незагрузившемся списке ни к чему не приводит, фокус остаётся в этом же поле.

Дизайн

Внешне поле ничем не отличается от обычного поля ввода. Справа иконка стрелочки  стрелка вниз — из библиотеки Kontur Icons.

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

В комбобоксе введено «Начос», список шире поля, в нём товары с выделенным жирным «Начос», длинные названия в две строки, первый пункт подсвечен

Ширина списка должна быть не меньше ширины поля. Красиво, когда список шире поля ввода на 30 — 40 px.

Комбобокс с открытым списком городов, список той же ширины, что и поле

Неправильно

Комбобокс с открытым списком городов, список шире поля и выступает за его правый край

Правильно

Размер и расположение

Поле ввода комбобокса, как и кнопка, может быть трёх размеров — S, M, L.

Подробнее — в гайде «Поле ввода».

Список с подсказками открывается вниз. Оптимальная высота списка 300 — 450 px. Чтобы список не выходил за границу страницы, проследите, чтобы под ним было достаточное количество места.

Валидация

Поле с ошибкой подсвечивается красной рамкой.

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

Поле с ошибкой: «Е» в красной рамке, рядом подсказка «Информация об ошибке. Короткий объясняющий текст». После получения фокуса рамка и подсказка те же, списка нет. После начала редактирования в поле «Ек», рамка чёрная, открыт список городов, подсказка остаётся.

Подробнее о поведении полей ввода с ошибками — в гайде «Валидация».

Доступность

Управление клавиатурой

При клике по полю и при переходе табом поле выглядит одинаково: появляется чёрная рамка или рамка в цвет продукта, которая сохраняется до потери фокуса.

Tab

Переход к следующему контролу.

↓ ↑

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

Если список скрыт, содержит только один вариант, сообщение об ошибке или о том, что нет совпадений, то текстовый курсор стоит в начале или в конце строки.

← →

Перемещение текстового курсора в поле ввода.

Esc

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

Space

Ввод пробела.

Enter

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