鉴于仍未完全支持 HTML datalist 标记,我使用的另一种方法是 Dojo Toolkit ComboBox。与我探索过的其他选项相比,它更容易实现并且记录得更好。它还可以很好地与现有框架配合使用。就我而言,我将此组合框添加到基于 Codeigniter 和 Bootstrap 的现有网站中,没有任何问题您只需确保将 Dojo 主题(例如 class="claro")应用于组合的父元素而不是 body 标签以避免样式冲突。
首先,包含一个 Dojo 主题(例如“Claro”)的 CSS。在下面的 JS 文件之前包含 CSS 文件很重要。
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/dojo/1.9.6/dijit/themes/claro/claro.css" />
接下来,通过 CDN 包含 jQuery 和 Dojo Toolkit
<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's sample code 或使用下面的示例来获得一个有效的组合框。
<body>
<!-- Dojo Dijit ComboBox with 'Claro' theme -->
<div class="claro"><input id="item_name_1" class=""/></div>
<script type="text/javascript">
$(document).ready(function () {
//In this example, dataStore is simply an array of JSON-encoded id/name pairs
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>