我正在将选项datalist
动态加载到 HTML5 元素中。但是,浏览器会尝试datalist
在选项加载之前显示。这会导致列表不显示或有时显示部分列表。加载选项后,有什么方法可以通过 JavaScript 刷新列表?
HTML
<input type="text" id="ingredient" list="ingredients">
<datalist id="ingredients"></datalist>
JavaScript
$("#ingredient").on("keyup", function(event) {
var value = $(this).val();
$.ajax({
url: "/api/ingredients",
data: {search: value.length > 0 ? value + "*" : ""},
success: function(ingredients) {
$("#ingredients").empty();
for (var i in ingredients) {
$("<option/>").html(ingredients[i].name).appendTo("#ingredients");
}
// Trigger a refresh of the rendered datalist
}
});
});
注意:在 Chrome 和 Opera 中,仅当用户在输入文本后单击输入时才会显示整个列表。但是,我希望整个列表显示为用户类型。Firefox 不是问题,因为它似乎会在更新选项时自动刷新列表。
更新
我不确定这个问题有一个令人满意的答案,因为我相信这只是某些浏览器的一个缺点。如果 adatalist
被更新,浏览器应该刷新列表,但有些浏览器(包括 Chrome 和 Opera)根本不这样做。黑客?