Autocomplete / Saran Pencarian
Membangun kotak pencarian dengan daftar saran yang bisa dipilih via keyboard.
Kenapa Autocomplete?
Google tidak menunggumu selesai mengetik; ia menebak. Autocomplete mempercepat pencarian dan mengurangi typo. Ini juga mengajarkan navigasi keyboard: panah atas/bawah + Enter, standar aksesibilitas.
Langkah Membangun
HTML: Input pencarian dalam wrapper relative, dan <ul id="saran"> absolute di bawahnya.
CSS: Daftar saran seperti dropdown: putih, shadow, item hover berwarna. Item yang dipilih keyboard (class sorot) punya background ungu muda.
JS:
- Data: array nama (misal 30 kota Indonesia).
- Event input (dengan debounce): filter data yang diawali/mengandung kata kunci, tampilkan maks 8 saran. Sorot kata cocok dengan
<mark>. - Keyboard: ArrowDown/ArrowUp menggerakkan
indeksSorot, Enter memilih saran tersorot, Escape menutup. - Klik saran mengisi input. Klik di luar menutup daftar.
indeksSorot = -1 artinya tidak ada yang tersorot. Pastikan scroll item tersorot ke area terlihat dengan scrollIntoView({ block: "nearest" }).
Kesalahan Umum
- Daftar tidak tertutup saat input dikosongkan.
- Enter men-submit form padahal saran sedang tersorot (preventDefault saat indeksSorot >= 0).
- Saran dari data tidak di-escape sehingga nama dengan < merusak HTML (gunakan textContent untuk bagian teks).
export default function App(): JSX.Element { return <h1>Hello world</h1> }
Tantangan
Tantangan: Saran dari API
Ganti data statis dengan fetch ke API Datamuse (https://api.datamuse.com/sug?s=kata) yang mengembalikan saran kata bahasa Inggris. Tangani loading dan error.