Da das HTML-Datenlisten-Tag immer noch nicht vollständig unterstützt wird, habe ich als alternativen Ansatz die Dojo Toolkit ComboBox verwendet . Es war einfacher zu implementieren und besser dokumentiert als andere Optionen, die ich untersucht habe. Es spielt sich auch gut mit vorhandenen Frameworks. In meinem Fall habe ich diese Combobox ohne Probleme zu einer vorhandenen Website hinzugefügt, die auf Codeigniter und Bootstrap basiert. Sie müssen lediglich sicherstellen, dass das Dojo-Thema (z. B. class = "claro") anstelle des body-Tags auf das übergeordnete Element der Combo angewendet wird Styling-Konflikte zu vermeiden.
Fügen Sie zunächst das CSS für eines der Dojo-Themen ein (z. B. 'Claro'). Es ist wichtig, dass die CSS-Datei vor den folgenden JS-Dateien enthalten ist.
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/dojo/1.9.6/dijit/themes/claro/claro.css" />
Fügen Sie als Nächstes jQuery und Dojo Toolkit über CDN hinzu
<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>
Als nächstes können Sie einfach dem Beispielcode von Dojo folgen oder das folgende Beispiel verwenden, um eine funktionierende Combobox zu erhalten.
<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>
Element allein kann das nicht.