首页 > 解决方案 > 刷新数据源自动完成jQuery

问题描述

我想在我的输入字段上发生 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,列表不显示。我必须按箭头键(向上或向下)才能打开列表。

此外,在打开列表进行新搜索(另一个键)时,它保持不变并且我没有更新我的列表。

所以我有两个问题:

  1. 当用户将焦点放在输入字段上时,如何让列表打开?
  2. 进行新搜索时如何刷新我的来源?

提前致谢 !:)

标签: javascriptjqueryjquery-ui-autocomplete

解决方案


我自己设法做到了,我知道这不是最干净的方法,但这是我的解决方案:

在重新创建之前销毁自动完成:

$("#myInput").autocomplete("destroy");

强制它失去焦点,然后强制关注输入:

$("#myInput").blur();
$("#myInput").focus();

正如我所说,远非最干净,但对用户透明......


推荐阅读