Tagi HTML: datalist

5 min. czytania

Element <datalist> to narzędzie HTML5 umożliwiające autouzupełnianie pól formularza poprzez dostarczenie użytkownikowi predefiniowanej listy sugestii.

Sam w sobie jest niewidoczny na stronie i działa jako uzupełnienie pola <input>, przypominając w działaniu listę rozwijalną <select>.

Czym jest <datalist>?

Element <datalist> reprezentuje zestaw opcji (elementów option) dla innych kontrolek formularza, przede wszystkim dla pól input. Jego rolą jest wsparcie wpisywania danych poprzez wyświetlanie dopasowanych sugestii.

Kluczowe: <datalist> nie renderuje się jako odrębny interfejs — jego zawartość widać dopiero po powiązaniu z polem input i rozpoczęciu wpisywania.

Jak używać <datalist>?

Powiązanie z elementem <input>

Aby <datalist> zadziałał, połącz go z polem input za pomocą atrybutu list, którego wartość odpowiada atrybutowi id w <datalist>. Oto przykładowe powiązanie:

<label>Wybierz przeglądarkę:</label>
<input list="przegladarki" />

<datalist id="przegladarki">
<option value="Chrome">
<option value="Firefox">
<option value="Internet Explorer">
<option value="Opera">
<option value="Safari">
</datalist>

W powyższym przykładzie atrybut list="przegladarki" w elemencie input łączy się z <datalist> o identyfikatorze id="przegladarki".

Praktyczne przykłady

Przykład 1 – lista województw

Poniżej formularz z sugestiami nazw polskich województw:

<label>Województwo:</label>
<input type="text" list="wojewodztwa">

<datalist id="wojewodztwa">
<option value="dolnośląskie">
<option value="kujawsko-pomorskie">
<option value="lubelskie">
<option value="lubuskie">
<option value="łódzkie">
<option value="małopolskie">
<option value="mazowieckie">
<option value="opolskie">
<option value="podkarpackie">
<option value="podlaskie">
<option value="pomorskie">
<option value="śląskie">
<option value="świętokrzyskie">
<option value="warmińsko-mazurskie">
<option value="wielkopolskie">
<option value="zachodniopomorskie">
</datalist>

Gdy użytkownik zacznie wpisywać np. „ma”, pojawią się pasujące sugestie: „małopolskie”, „mazowieckie”.

Przykład 2 – lista kolorów

Przykład prostego formularza z autosugestiami nazw kolorów:

<form action="https://example.com/submit">
<label>Podaj nazwę koloru:</label>
<input type="text" name="nazwa-koloru" list="lista-kolorow">

<datalist id="lista-kolorow">
<option>czerwony</option>
<option>zielony</option>
<option>niebieski</option>
<option>czarny</option>
<option>biały</option>
<option>żółty</option>
<option>pomarańczowy</option>
<option>złoty</option>
<option>srebrny</option>
<option>brązowy</option>
</datalist>
</form>

Przykład 3 – gry planszowe

Lista propozycji dla ulubionej gry planszowej:

<label>Ulubiona gra:</label>
<input list="game">

<datalist id="game">
<option value="Szachy"></option>
<option value="Warcaby"></option>
<option value="Bierki"></option>
</datalist>

Atrybuty i właściwości

Element <datalist> nie ma atrybutów obowiązkowych — działa dopiero po powiązaniu z input poprzez atrybut list.

Każdy element <option> wewnątrz <datalist> powinien posiadać atrybut value określający wartość sugestii. Opcjonalnie można dodać atrybut label z krótszym opisem. Przykład użycia:

<datalist id="identyfikator">
<option value="wartość1" label="skrót1">
<option value="wartość2" label="skrót2">
</datalist>

Kontekst HTML5

Poniższa tabela porządkuje kluczowe informacje o elemencie <datalist>:

Właściwość Wartość
Elementy nadrzędne Elementy treści ogólnej
Elementy potomne Elementy treści ogólnej, option
Znaczniki Otwierający i zamykający są obowiązkowe
Norma HTML HTML 5 — podrozdział 4.10.10
Interfejs DOM HTMLDataListElement
Kiedy dodano Element datalist został wprowadzony w HTML5

Kompatybilność z przeglądarkami

Element <datalist> jest wspierany przez większość nowoczesnych przeglądarek. Zestawienie wsparcia wygląda następująco:

Przeglądarka Wersja Data wsparcia
Chrome 20+ 2012-06-26
Firefox 4+ 2011-03-22
Edge 12+ 2015-07-29
Opera 9.5+ 2008-06-12
Safari 12.1+ 2019-03-25

Starsze przeglądarki nie wyświetlą autouzupełniania opartego o <datalist>. W takim przypadku użytkownik wpisze wartość ręcznie, a formularz pozostanie w pełni używalny.

Obsługa starszych przeglądarek

Aby zapewnić kompatybilność wsteczną, możesz osadzić <select> wewnątrz <datalist>. Nowoczesne przeglądarki zignorują <select> i użyją sugestii z <datalist>, a starsze pokażą klasyczną listę rozwijalną. Oto schemat:

<input name="nazwa" list="identyfikator">

<datalist id="identyfikator">
<select name="nazwa">
<option value="wartość1" label="skrót1">
<option value="wartość2" label="skrót2">
</select>
</datalist>

Zalety stosowania <datalist>

Najważniejsze korzyści ze stosowania <datalist> to:

  • oszczędność czasu użytkownika – sugestie eliminują konieczność ręcznego wpisania pełnej wartości;
  • poprawa doświadczenia użytkownika – szczególnie przydatne dla skomplikowanych danych (kody pocztowe, nazwy miast, województwa);
  • elastyczność – użytkownik może wybrać sugestię lub wpisać własną wartość;
  • brak wpływu na stare przeglądarki – element jest niewidoczny dla nieobsługujących go przeglądarek;
  • łatwość implementacji – wymaga tylko kilku linii kodu.

Ograniczenia

Przed wdrożeniem warto uwzględnić następujące ograniczenia:

  • słaba popularność – element nie jest powszechnie znany, co może prowadzić do jego niedostatecznego wykorzystania;
  • wsparcie przeglądarek – starsze wersje przeglądarek go nie obsługują;
  • brak stylizacji – brak możliwości zaawansowanego stylizowania listy sugestii poprzez CSS.