我想在输入字段上的键入事件后刷新自动完成源。
我的代码如下:
<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
时,列表没有显示。我必须按箭头键(向上或向下)以打开列表。
此外,在列表打开的情况下进行新搜索(另一个键入)时,它保持不变,并且我没有更新列表。
所以我有2个问题:
提前谢谢! :)
答案 0 :(得分:0)
我自己做了,我知道这不是最干净的方法,但这是我的解决方案:
在重建自动完成功能之前将其破坏:
var array = [{'ref1': {'Product': 'Car', 'color': 'Red'}}, {'ref2': {'product': 'velo', 'color': 'red'}}];
var ref1 = array.filter(item => item == {'ref1': {'Product': 'Car', 'color': 'Red'}})[0];
var index = array.indexOf(ref1);
array[index]['Price'] = 8;
强迫它失去焦点,然后将焦点集中在输入上:
$("#myInput").autocomplete("destroy");
正如我所说,这不是最干净的,但对用户透明...