С технической точки зрения они совершенно разные. <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>за очень плохой поддержки браузера.