【发布时间】:2021-12-01 19:35:44
【问题描述】:
我正在尝试使用动态数据实现自动完成下拉列表,但它没有在下拉列表中显示任何建议。我正在使用这个例子 - 数据列表:https://getbootstrap.com/docs/5.1/forms/form-control/ 这适用于预定义的选项标签。
<label for="exampleDataList" class="form-label">Datalist example</label>
<input class="form-control" list="datalistOptions" id="exampleDataList" placeholder="Type to search...">
<datalist id="datalistOptions">
... dynamic data here
</datalist>
我确实收到了来自 PHP 脚本的数据并且它们被正确访问,但我认为问题可能是由于获取延迟造成的。 HTML 可能期望数据在加载时已经存在。这就是为什么它可能适用于现有数据。
这是 fetch 函数中的 javacsript 代码,我在其中动态生成标签:
var select = document.getElementById("datalistOptions");
select.innerHTML = "";
for (var key in data['result']) {
var val = data['result'][key];
if (data['result'].hasOwnProperty(key) && key != "error") {
var val = data['result'][key];
if (val != "") {
var option = document.createElement("option");
option.value = val.id;
select.appendChild(option);
}
}
}
更新:我稍微更改了 js 代码。现在它使用 appendChild 而不是 add 函数。前一个没有向数据列表添加任何选项。 appendChild 确实将选项添加到列表中,但不会显示它们。
【问题讨论】:
-
你如何调用生成列表的 js 脚本?检查 HTML 源代码 - 那里看起来不错?
-
@TomerE 请阅读我的更新
-
你的更新还没有回答这个问题,你在哪里/何时/如何实际调用它。显示的代码是在页面加载时运行,还是在用户已经在字段中输入时运行,或者...?
-
@CBroe 代码在用户类型时运行。所以当用户开始输入时。
-
stackoverflow.com/questions/26610752/… 有几种方法来处理这个问题。
标签: javascript html bootstrap-4