Dari sudut pandang teknis mereka sangat berbeda. <datalist>
adalah wadah abstrak opsi untuk elemen lain. Dalam kasus Anda, Anda telah menggunakannya dengan <input type="text"
tetapi Anda juga dapat menggunakannya dengan rentang, warna, tanggal, dll. Http://demo.agektmr.com/datalist/
Jika menggunakannya dengan input teks, sebagai jenis pelengkapan otomatis, maka pertanyaan sebenarnya adalah: Apakah lebih baik menggunakan input teks bentuk bebas, atau daftar opsi yang telah ditentukan? Dalam hal ini saya pikir jawabannya sedikit lebih jelas.
Jika kita fokus pada penggunaan <datalist>
sebagai daftar opsi untuk bidang teks maka berikut adalah beberapa perbedaan spesifik antara itu dan kotak pilih:
- Sebuah
<datalist>
kotak teks makan memiliki string tunggal untuk kedua label dan menyerahkan display. Kotak pilih dapat memiliki nilai kirim vs. label tampilan yang berbeda <option value='ie'>Internet Explorer</option>
.
- Sebuah
<datalist>
kotak teks makan tidak mendukung <optgroup>
tag untuk mengatur tampilan.
- Anda tidak dapat membatasi pengguna ke daftar opsi
<datalist>
seperti yang Anda bisa dengan <select>
.
- Acara onchange bekerja secara berbeda. Pada
<select>
elemen, peristiwa onchange diaktifkan segera setelah perubahan, sedangkan dengan <input type="text"
peristiwa diaktifkan setelah elemen kehilangan fokus atau pengguna menekan enter.
<datalist>
memiliki dukungan yang sangat buruk di seluruh browser. Cara untuk menampilkan semua opsi yang tersedia tidak konsisten, dan hal-hal hanya menjadi lebih buruk dari sana.
Poin terakhir benar-benar yang besar menurut saya. Karena Anda HARUS memiliki fallback pelengkapan otomatis yang lebih universal, maka hampir tidak ada alasan untuk mengalami kesulitan dalam mengonfigurasi file <datalist>
. Ditambah pluging autocomplete yang layak akan memungkinkan cara untuk menata tampilan opsi Anda, yang <datalist>
tidak bisa dilakukan. Jika <datalist>
menerima <li>
elemen yang dapat Anda manipulasi sesuka Anda, itu akan sangat bagus! Tapi tidak.
Juga sejauh yang saya tahu, <datalist>
pencarian adalah pencocokan tepat dari awal string. Jadi jika Anda pernah <option value="internet explorer">
dan Anda mencari 'penjelajah' Anda tidak akan mendapatkan hasil. Kebanyakan plugin pelengkapan otomatis akan mencari di mana saja dalam teks.
Saya hanya menggunakan <datalist>
sebagai pembantu kenyamanan cepat dan malas untuk beberapa halaman internal di mana saya tahu dengan kepastian 100% bahwa pengguna memiliki Chrome atau Firefox terbaru, dan tidak akan mencoba mengirimkan nilai palsu. Untuk kasus lain, sulit untuk merekomendasikan penggunaan <datalist>
karena dukungan browser yang sangat buruk.