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