<select>
Rozwijana lista, z której użytkownik wybiera jedną lub kilka opcji.
- Wyświetlanie
- inline-block
- Znacznik zamykający
- Wymagany
- Dozwolona zawartość
- Elementy
<option>i<optgroup>
Przykład
#<label for="lang">Język kursu</label>
<select id="lang" name="lang">
<option value="pl" selected>Polski</option>
<option value="en">Angielski</option>
<option value="de">Niemiecki</option>
</select>Definicja i zastosowanie
#Element <select> tworzy listę wyboru. Opcje zapisujesz w elementach <option>, a powiązane opcje możesz pogrupować w <optgroup>. Po wysłaniu formularza na serwer trafia para name=value wybranej opcji.
Rozwijana lista oszczędza miejsce, gdy opcji jest dużo: kraj, województwo, język kursu. Przy dwóch, trzech opcjach często wygodniejsze są przyciski radiowe, bo wszystkie możliwości widać od razu, bez klikania.
Z atrybutem multiple lista zamienia się w pole, w którym można zaznaczyć kilka opcji (na komputerze z wciśniętym Ctrl lub Cmd). To rozwiązanie bywa mało intuicyjne, więc przy wielokrotnym wyborze rozważ zestaw pól wyboru checkbox.
Składnia
#<select name="nazwa">
<option value="a">Opcja A</option>
<option value="b">Opcja B</option>
</select>Atrybuty
#name
tekst
Nazwa, pod którą wartość wybranej opcji trafi na serwer. Lista beznamenie zostanie wysłana.atrybut logiczny
Pozwala zaznaczyć kilka opcji. Lista wyświetla się wtedy jako przewijane pole zamiast rozwijanego menu, a na serwer trafia osobna paraname=valuedla każdej zaznaczonej opcji.liczba
Liczba widocznych wierszy listy. Wartość większa niż 1 zamienia rozwijane menu w stałe pole z listą, także bezmultiple.atrybut logiczny
Wymaga wybrania opcji z niepustą wartością. Popularny wzorzec to pierwsza opcja z pustymvalue, na przykład „Wybierz miasto…”, która działa jak podpowiedź i nie przejdzie walidacji.atrybut logiczny
Wyłącza całą listę. Wartość wyłączonej listy nie jest wysyłana z formularzem.
Element obsługuje też wszystkie atrybuty globalne, takie jak class, id, style czy hidden.
Atrybuty w praktyce
#multiple
atrybut logicznyPozwala zaznaczyć kilka opcji. Lista wyświetla się wtedy jako przewijane pole zamiast rozwijanego menu, a na serwer trafia osobna para name=value dla każdej zaznaczonej opcji.
<label for="topics">Co Cię interesuje?</label><br>
<select id="topics" name="topics" multiple>
<option value="frontend" selected>Frontend</option>
<option value="backend">Backend</option>
<option value="mobile" selected>Aplikacje mobilne</option>
<option value="ai">Sztuczna inteligencja</option>
</select>size
liczbaLiczba widocznych wierszy listy. Wartość większa niż 1 zamienia rozwijane menu w stałe pole z listą, także bez multiple.
<select name="level" size="3" aria-label="Poziom">
<option>Początkujący</option>
<option>Średniozaawansowany</option>
<option>Zaawansowany</option>
</select>required
atrybut logicznyWymaga wybrania opcji z niepustą wartością. Popularny wzorzec to pierwsza opcja z pustym value, na przykład „Wybierz miasto…”, która działa jak podpowiedź i nie przejdzie walidacji.
<form>
<select name="city" required aria-label="Miasto">
<option value="">Wybierz miasto…</option>
<option value="krk">Kraków</option>
<option value="waw">Warszawa</option>
<option value="wro">Wrocław</option>
</select>
<button>Dalej</button>
</form>disabled
atrybut logicznyWyłącza całą listę. Wartość wyłączonej listy nie jest wysyłana z formularzem.
<select name="plan" disabled aria-label="Plan">
<option>Plan roczny</option>
</select>Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Zawsze łącz listę z etykietą
<label>. Pierwsza opcja „Wybierz…” nie zastępuje etykiety. - Wygląd rozwijanej listy tylko częściowo da się zmienić w CSS. Nowy mechanizm pełnego stylowania (
appearance: base-select) działa na razie tylko w części przeglądarek. - Przy bardzo długich listach, na przykład setkach miast, rozważ pole tekstowe z podpowiedziami
<datalist>.
Powiązane hasła
#- <option>Pojedyncza opcja listy `<select>` albo podpowiedź w `<datalist>`.
- <optgroup>Nazwana grupa opcji wewnątrz listy `<select>`.
- <datalist>Lista podpowiedzi dla pola `<input>`. Można wybrać propozycję albo wpisać własną wartość.
- <label>Etykieta pola formularza. Kliknięcie etykiety przenosi kursor do pola.
- <form>Formularz, który zbiera dane od użytkownika i wysyła je pod wskazany adres.
- onchangeUruchamia kod JavaScript, gdy użytkownik zatwierdzi nową wartość pola: wybierze opcję, zaznaczy pole wyboru albo skończy pisać.
Widzisz błąd albo brakuje przykładu? Napisz do nas.