З технічної точки зору вони зовсім інші. <datalist>
є абстрактним контейнером варіантів для інших елементів. У вашому випадку ви використовували його, <input type="text"
але ви також можете використовувати його з діапазонами, кольорами, датами тощо. Http://demo.agektmr.com/datalist/
Якщо ви використовуєте його з введенням тексту, як тип автозаповнення, то справді виникає питання: чи краще використовувати введення тексту у вільній формі або заздалегідь визначений список варіантів? У цьому випадку я думаю, що відповідь трохи очевидніша.
Якщо ми зосередимось на використанні <datalist>
в якості списку параметрів для текстового поля, то ось деякі конкретні відмінності між цим і полем вибору:
<datalist>
Подаються текстове поле має один рядок , як для етикетки дисплея і натисніть кнопку. Поле вибору може мати інше значення подання та мітку відображення <option value='ie'>Internet Explorer</option>
.
<datalist>
Подається текстове поле не підтримує <optgroup>
тег для організації відображення.
- Ви не можете обмежувати користувача списком параметрів у
<datalist>
подібному варіанті <select>
.
- OnChange подія працює по- іншому. На
<select>
елементі подія onchange запускається негайно при зміні, тоді як при <input type="text"
події запускається після того, як елемент втрачає фокус або користувач натискає.
<datalist>
має дійсно непомітну підтримку в браузерах Спосіб показу всіх доступних варіантів є непослідовним, і звідти все тільки погіршується.
Останній пункт, на мою думку, дійсно великий. Оскільки у вас буде більш універсальний запас автозаповнення, то майже не існує причин переживати проблеми з налаштуванням <datalist>
. Плюс будь-яке пристойне підключення до автозаповнення дозволить створити способи стилю відображення ваших параметрів, що <datalist>
не робить. Якби <datalist>
прийняті <li>
елементи, якими ви могли б маніпулювати, як завгодно, це було б справді чудово! Але не.
Крім того, наскільки я можу сказати, <datalist>
пошук є точною відповідністю від початку рядка. Тож якби ви мали <option value="internet explorer">
і шукали "explorer", ви не отримали б результатів. Більшість плагінів для автозаповнення здійснюватимуть пошук у будь-якому місці тексту.
Я використовую <datalist>
лише швидкий і ледачий помічник зручності для деяких внутрішніх сторінок, на яких я зі 100% впевненістю знаю, що користувачі мають найновіший Chrome або Firefox, і не намагатимуться надсилати фальшиві значення. У будь-якому іншому випадку важко рекомендувати використання <datalist>
через дуже погану підтримку браузера.