我想在输入字段上发生 keyup 事件后刷新我的自动完成源。
我的代码如下:
<div class="ui-widget">
<input id="myInput" type="text">
</div>
var nb = data.length;
var myArray = [];
for (var i = 0; i < nb; i++) {
myArray.push({
value: data[i],
label: data[i],
});
}
$("#myInput").autocomplete({
source: myArray,
minLength: 1,
select : function(event, ui) {
// someCode;
}
}).on("focus", function() {
$(this).autocomplete("search");
});
初始化时,我的自动完成源是一个空数组。每次用户按下某个键后,该数组都会更新。问题是,当我填充 myArray
时,列表不显示。我必须按箭头键(向上或向下)才能打开列表。
此外,在打开列表的情况下进行新搜索(另一个键盘输入)时,它保持不变,并且我没有更新列表。
所以我有两个问题:
- 当用户将焦点放在输入字段上时,如何让列表打开?
- 进行新搜索时如何刷新我的来源?
提前致谢! :)
最佳答案
我自己设法做到了,我知道这不是最干净的方法,但这是我的解决方案:
在重新创建自动完成之前销毁它:
$("#myInput").autocomplete("destroy");
强制其失去焦点,然后强制将焦点放在输入上:
$("#myInput").blur();
$("#myInput").focus();
正如我所说,远不是最干净的,但对用户来说是透明的......
关于javascript - 刷新数据源自动完成 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606392/