<select>: Елемент вибору HTML

Елемент HTML <select> (вибір) представляє контрольний елемент, що надає меню з варіантів вибору.

Спробуйте його в дії

Приклад вище показує типове використання <select>. Елемент отримує атрибут id, котрий дає змогу пов'язати його з елементом <label> для потреб доступності, а також атрибут name, котрий представляє ім'я відповідної порції даних при поданні форми на сервер. Кожен варіант меню описується елементом <option>, дочірнім щодо <select>.

Кожен елемент <option> повинен мати атрибут value, що містить значення, котре буде подано на сервер, якщо відповідний варіант – обраний. Якщо атрибута value немає, то усталеним значенням є текст всередині елемента. Щоб елемент option був обраним при першому завантаженні сторінки, слід вказати атрибут selected елемента <option>.

У JavaScript елемент <select> представляється об'єктом HTMLSelectElement, і цей об'єкт має властивість value, яка вміщає значення вибраного <option>.

Елемент <select> має певні унікальні атрибути для контролю над собою, наприклад, multiple для задання можливості (чи неможливості) вибору кількох варіантів та size з кількістю варіантів, котру можна обрати водночас. Також він приймає більшість звичних атрибутів полів вводу, наприклад, required, disabled, autofocus тощо.

Можна вкладати елементи <option> в елементи <optgroup>, щоб створити розмежовані групи варіантів всередині спадного списку. Також можна додавати елементи <hr>, щоб утворювати розділювачі, що служать візуальними розривами між варіантами.

Інші приклади використання доступні за посиланням: Нативні віджети форми: Вміст спадного списку.

Атрибути

Цей елемент приймає глобальні атрибути.

autocomplete (автозаповнення)

Рядок, що дає підказку функціональності автозаповнення користувацького агента. Повний список значень та деталей про те, як використовувати автозаповнення, доступний за посиланням: HTML-атрибут автозаповнення.

autofocus (автофокус)

Цей булів атрибут дає змогу вказати, що контрольний елемент повинен отримати фокус введення, коли сторінка завантажилась. Лише один елемент форми в документі може мати атрибут autofocus.

disabled (вимкнений)

Цей булів атрибут показує, що користувач не може взаємодіяти з контрольним елементом. Якщо цей атрибут не вказаний, то контрольний елемент успадковує це налаштування від контейнерного елемента, наприклад, <fieldset>; якщо немає контейнерного елемента з атрибутом disabled, то контрольний елемент є увімкненим.

form (форма)

Елемент <form>, з котрим елемент <select> пов'язаний (його форма-власник). Значення цього атрибута мусить відповідати значенню атрибута id елемента <form> в тому самому документі. (Якщо цей атрибут не вказаний, то <select> пов'язується з елементом <form>, котрий є його предком, якщо такий предок є.)

Цей атрибут дає змогу пов'язувати елементи <select> із формами будь-де в документі, не поміщаючи їх у відповідний <form>. Також така поведінка змушує нехтувати батьківським елементом <form>.

multiple (декілька)

Цей булів атрибут показує, що зі списку можуть бути обрані кілька варіантів. Якщо він не вказаний, то лише один варіант може бути обраним водночас. Коли вказаний multiple, більшість браузерів замість однорядкового спадного списку показують віконце списку з прокруткою.

name (ім'я)

Цей атрибут використовується, щоб вказати ім'я контрольного елемента.

required (обов'язковий)

Булів атрибут, що показує, що повинен бути обраний варіант із непустим значенням-рядком.

size (розмір)

Якщо контрольний елемент поданий у вигляді віконця списку з прокруткою (наприклад, коли вказано multiple), цей атрибут представляє кількість рядів списку, контрі повинні бути видимі водночас. Браузери не зобов'язані показувати елемент вибору як віконце списку з прокруткою. Усталене значення – 0.

[!NOTE] Згідно зі специфікацією HTML, усталеним значенням size має бути 1; втім, на практиці виявилось, що це ламає певні вебсайти, і що жоден інший браузер так не робить, тому Mozilla вирішила продовжити повертати в Firefox 0 на постійній основі.

Примітки щодо використання

Вибір декількох варіантів

На настільних комп'ютерах доступна низка способів обрати декілька варіантів у елементі <select> з атрибутом multiple:

Користувачі миші можуть утримувати клавішу Ctrl, Command чи Shift (залежно від того, що має зміст для вашої операційної системи), а потім клацнути декілька варіантів, щоб обрати їх або скасувати вибір.

[!WARNING] Механізм вибору декількох несуміжних елементів за допомогою клавіатури, описаний нижче, схоже, наразі працює лише в Firefox.

На macOS комбінації клавіш Ctrl + вгору та Ctrl + вниз конфліктують з усталеними комбінаціями контролю місії та вікон застосунків, тож ці усталені комбінації слід відключити, перш ніж описаний нижче механізм запрацює.

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

  • Перевести фокус на елемент <select> (на приклад, використовуючи

    Tab

    ).

  • Обрати елемент нагорі чи внизу діапазону, котрий бажають обрати, використовуючи курсорні клавіші

    вгору

    та

    вниз

    , щоб рухатись вгору та вниз по списку варіантів.

  • Утримуючи клавішу

    Shift

    , за допомогою курсорних клавіш

    вгору

    та

    вниз

    , аби збільшити чи зменшити діапазон обраних елементів.

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

  • Перевести фокус на елемент <select> (на приклад, використовуючи

    Tab

    ).

  • Утримуючи клавішу

    Ctrl

    , за допомогою курсорних клавіш

    вгору

    та

    вниз

    , змінювати "сфокусований" варіант вибору, тобто той, котрий стане обраним, якщо так вирішить користувач. "Сфокусований" варіант вибору підсвічується пунктирним контуром, – так само як сфокусоване за допомогою клавіатури посилання.

  • Натискаючи клавішу

    пробіл

    , обрати чи скасувати вибір "сфокусованого" варіанту вибору.

Оформлення засобами CSS

Елемент <select> відомий складністю ефективного оформлення засобами CSS. Можна повпливати на певні аспекти, як і в будь-якого елемента, – наприклад, оперуючи рамковою моделлю, використаним шрифтом тощо, а також можна використати властивість appearance, щоб усунути усталений системний вигляд.

Втім, ці властивості не дають сталих результатах на всіх браузерах, тож важко робити речі штибу шикування різних типів елементів форми одне з одним в один стовпець. Внутрішня структура елемента <select> – складна, а також важка для контролю. При потребі отримати повний контроль слід розглянути варіанти використання бібліотеки з добрими можливостями з оформленнями віджетів форми та розгортання власного спадного меню за допомогою несемантичних елементів і JavaScript, а також WAI-ARIA для надання семантики.

Більше інформації про оформлення <select>:

Доступність

Елемент <hr> усередині <select> слід розглядати як суто декоративний, оскільки він наразі не відображається у дереві доступності, а тому не видається допоміжним технологіям.

Приклади

Простий select

Наступний приклад створює украй просте спадне меню, другий варіант котрого є усталено обраним.

<!-- Спершу буде обрано друге значення -->
<select name="choice">
  <option value="first">Перше значення</option>
  <option value="second" selected>Друге значення</option>
  <option value="third">Третє значення</option>
</select>

Результат

Select з групуванням варіантів

Наступний приклад створює спадне меню з групуванням за допомогою <optgroup> і <hr>, щоб користувачу було легше зрозуміти вміст цього спадного меню.

<label for="hr-select">Ваша улюблена їжа</label> <br />

<select name="foods" id="hr-select">
  <option value="">Оберіть їжу</option>
  <hr />
  <optgroup label="Фрукти">
    <option value="apple">Яблука</option>
    <option value="banana">Банани</option>
    <option value="cherry">Вишні</option>
    <option value="damson">Сливи</option>
  </optgroup>
  <hr />
  <optgroup label="Овочі">
    <option value="artichoke">Артишоки</option>
    <option value="broccoli">Броколі</option>
    <option value="cabbage">Капуста</option>
  </optgroup>
  <hr />
  <optgroup label="М'ясо">
    <option value="beef">Яловичина</option>
    <option value="chicken">Курка</option>
    <option value="pork">Свинина</option>
  </optgroup>
  <hr />
  <optgroup label="Риба">
    <option value="cod">Тріска</option>
    <option value="haddock">Пікша</option>
    <option value="salmon">Лосось</option>
    <option value="turbot">Калкан</option>
  </optgroup>
</select>

Результат

Поглиблений приклад select з використанням багатьох можливостей

Наступний приклад – складніший, він показує більше можливостей, котрі можна використати з елементом <select>:

<label
  >Будь ласка, оберіть одну чи більше тваринок:
  <select name="pets" multiple size="4">
    <optgroup label="Чотирилапі">
      <option value="dog">Пес</option>
      <option value="cat">Кіт</option>
      <option value="hamster" disabled>Хом'як</option>
    </optgroup>
    <optgroup label="Птахи">
      <option value="parrot">Папуга</option>
      <option value="macaw">Ара</option>
      <option value="albatross">Альбатрос</option>
    </optgroup>
  </select>
</label>

Результат

Ви побачите, що

  • Можна обрати декілька варіантів, адже додано атрибут multiple.
  • Атрибут size приводить до того, що водночас видно лише 4 пункти; щоб побачити усі варіанти, можна використати прокручування.
  • Ми додали елементи <optgroup>, щоб поділити варіанти на різні групи. Це суто візуальне групування, чиє відображення в цілому складається із назви групи грубим шрифтом та відступу на варіантах.
  • Варіант "Хом'як" має атрибут disabled, а тому не може бути обраний узагалі.

Технічний підсумок

Категорії вмісту Потоковий вміст, оповідальний вміст, інтерактивний вміст, перелічений, підписний, скиданий та подавальний асоційований з формою елемент
Дозволений вміст Нуль чи більше елементів <option>, <optgroup> або <hr>.
Пропуск тега Немає; і початковий, і кінцевий теги – обов'язкові.
Дозволені предки Будь-які елементи, котрі приймають оповідальний вміст.
Неявна роль ARIA combobox, якщо немає атрибута multiple і немає атрибута size зі значенням, більшим за 1, інакше – listbox
Дозволені ролі ARIA menu, якщо немає атрибута multiple і немає атрибута size зі значенням, більшим за 1, інакше – всі ролі недозволені
Інтерфейс DOM HTMLSelectElement

Специфікації

Сумісність із браузерами

desktop mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet
select
Chrome Full support Так
footnote
Edge Full support 12
Firefox Full support 1
footnote
Internet Explorer Full support Так
Opera Full support Так
Safari Full support Так
footnote
WebView Android Full support Так
footnote
Chrome Android Full support Так
footnote
Firefox for Android Full support 4
footnote
Opera Android Full support Так
Safari on iOS Full support Так
footnote
Samsung Internet Full support Так
footnote
disabled
Chrome Full support Так
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support Так
Opera Full support Так
Safari Full support Так
WebView Android Full support Так
Chrome Android Full support Так
Firefox for Android Full support 4
Opera Android Full support Так
Safari on iOS Full support Так
Samsung Internet Full support Так
form
Chrome Full support Так
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support Так
Opera Full support Так
Safari Full support Так
WebView Android Full support Так
Chrome Android Full support Так
Firefox for Android Full support 4
Opera Android Full support Так
Safari on iOS Full support Так
Samsung Internet Full support Так
multiple
Chrome Full support Так
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support Так
Opera Full support Так
Safari Full support Так
WebView Android Full support Так
Chrome Android Full support Так
Firefox for Android Full support 4
Opera Android Full support Так
Safari on iOS Full support Так
Samsung Internet Full support Так
name
Chrome Full support Так
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support Так
Opera Full support Так
Safari Full support Так
WebView Android Full support Так
Chrome Android Full support Так
Firefox for Android Full support 4
Opera Android Full support Так
Safari on iOS Full support Так
Samsung Internet Full support Так
required
Chrome Full support Так
Edge Full support 12
Firefox Full support 4
Internet Explorer Full support 10
Opera Full support Так
Safari Full support Так
WebView Android Full support Так
Chrome Android Full support Так
Firefox for Android Full support 4
Opera Android Full support Так
Safari on iOS Full support Так
Samsung Internet Full support Так
size
Chrome Full support Так
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support Так
Opera Full support Так
Safari Full support Так
WebView Android Full support Так
Chrome Android Full support Так
Firefox for Android Full support 4
Opera Android Full support Так
Safari on iOS Full support Так
Samsung Internet Full support Так

Дивіться також