Do thẻ danh sách dữ liệu HTML vẫn chưa được hỗ trợ đầy đủ, một cách tiếp cận thay thế mà tôi đã sử dụng là ComboBox của Bộ công cụ Dojo . Nó dễ thực hiện hơn và được ghi lại tốt hơn so với các tùy chọn khác mà tôi đã khám phá. Nó cũng hoạt động tốt với các khuôn khổ hiện có. Trong trường hợp của tôi, tôi đã thêm combobox này vào một trang web hiện có dựa trên Codeigniter và Bootstrap mà không có vấn đề gì. Bạn chỉ cần đảm bảo áp dụng chủ đề Dojo (ví dụ: class = "claro") vào phần tử mẹ của combo thay vì thẻ body để tránh xung đột về kiểu dáng.
Đầu tiên, hãy bao gồm CSS cho một trong các chủ đề Dojo (chẳng hạn như 'Claro'). Điều quan trọng là tệp CSS phải được bao gồm trước các tệp JS bên dưới.
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/dojo/1.9.6/dijit/themes/claro/claro.css" />
Tiếp theo, bao gồm jQuery và Bộ công cụ Dojo qua 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>
Tiếp theo, bạn có thể làm theo mã mẫu của Dojo hoặc sử dụng mẫu bên dưới để có được một hộp kết hợp hoạt động.
<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>
phần tử không thể làm điều đó.