Datalist (Input Suggestion) — HTML

Pernah ngetik di Google search dan muncul saran-saran otomatis di bawah search box? Kamu bisa pilih saran (cepet) atau ketik bebas (kalo gak ada yang cocok)…

Pernah ngetik di Google search dan muncul saran-saran otomatis di bawah search box? Kamu bisa pilih saran (cepet) atau ketik bebas (kalo gak ada yang cocok). Tag <datalist> ngasih kamu UX yang sama di form sendiri — input dengan suggestion list. Beda dari <select> dropdown yang maksa user pilih dari opsi: datalist kasih kebebasan ketik.

💡 Native vs library. Banyak developer langsung reach for autocomplete library (Select2, react-select) padahal <datalist> udah cukup buat use case sederhana — kota, tag, history search. Pakai dulu, kalau memang butuh fitur kompleks (filter, multi-select, async loading) baru naik level.

Sintaks <datalist>

Pasangan <input list="X"> + <datalist id="X">:

<label for="kota">Kota:</label>
<input list="daftar-kota" id="kota" name="kota">

<datalist id="daftar-kota">
  <option value="Jakarta">
  <option value="Bandung">
  <option value="Surabaya">
  <option value="Yogyakarta">
</datalist>

Cara Kerja

Beda dari <select>

<select> <datalist>
Hanya boleh pilih opsi Bisa ketik bebas
Selalu terbuka saat diklik Muncul saat user mulai mengetik
Wajib ada value Saran tidak wajib

Cocok untuk: pencarian dengan history, tag suggestion, pilihan kota/negara, nama pengguna yang pernah dipakai.

🎭 Analogi sehari-hari

Pernah pas ngetik di Google search, muncul saran-saran lengkapin kalimat di bawah search box? Kamu bisa pilih saran (cepet) atau lanjut ngetik bebas (kalo gak ada yang cocok). <datalist> ngasih kamu UX yang sama di form sendiri — input dengan saran. Beda dari <select> yang maksa user pilih dari opsi yang udah ada, datalist kasih kebebasan: pilih kalo ada yang cocok, ketik bebas kalo enggak.

⚠️ Jebakan yang sering ditemui

TL;DR: <datalist> = autocomplete native untuk <input>. Setup: <input list="X"> + <datalist id="X"><option value="..."></datalist> (id harus match). Beda dari <select>: user TETAP bisa ketik bebas nilai di luar daftar (gak strict). Cocok buat pencarian dengan history, tag suggestion, pilihan kota. Limited styling — appearance browser default. Buat strict validation: kombinasi dengan pattern/required. Untuk autocomplete kompleks, pakai combobox WAI-ARIA + custom JS.

Yang akan kamu pelajari