Учитывая, что тег HTML datalist до сих пор полностью не поддерживается, я использовал альтернативный подход - Dojo Toolkit ComboBox. . Это было проще реализовать и лучше задокументировать, чем другие варианты, которые я изучал. Он также хорошо работает с существующими фреймворками. В моем случае я без проблем добавил это поле со списком к существующему веб-сайту, основанному на Codeigniter и Bootstrap. Вам просто нужно обязательно применить тему Dojo (например, class = "correo") к родительскому элементу комбо вместо тега body. чтобы избежать конфликтов стилей.
Во-первых, включите CSS для одной из тем Dojo (например, «Claro»). Важно, чтобы файл CSS был включен до файлов JS ниже.
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/dojo/1.9.6/dijit/themes/claro/claro.css" />
Затем подключите jQuery и Dojo Toolkit через CDN.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.10.3/dojo/dojo.js"></script>
Затем вы можете просто следовать образцу кода Dojo или использовать образец ниже, чтобы получить работающее поле со списком.
<body>
<div class="claro"><input id="item_name_1" class=""/></div>
<script type="text/javascript">
$(document).ready(function () {
dataStore = [{"id":"43","name":"Domain Name Renewal"},{"id":"42","name":"Hosting Renewal"}];
require(
[ "dojo/store/Memory", "dijit/form/ComboBox", "dojo/domReady!"],
function (Memory, ComboBox) {
var stateStore = new Memory({
data: dataStore
});
var combo = new ComboBox({
id: "item_name_1",
name: "desc_1",
store: stateStore,
searchAttr: "name"},
"item_name_1"
).startup();
});
});
</script>
</body>
<select>
элемент не может этого сделать.