javascript - 刷新数据源自动完成 jQuery

标签 javascript jquery jquery-ui-autocomplete

我想在输入字段上发生 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. 进行新搜索时如何刷新我的来源?

提前致谢! :)

最佳答案

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

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

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

强制其失去焦点,然后强制将焦点放在输入上:

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

正如我所说,远不是最干净的,但对用户来说是透明的......

关于javascript - 刷新数据源自动完成 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606392/

相关文章:

javascript - HTML 文件上传

javascript - 使用元素 ID 填充 jQuery UI 自动完成列表

javascript - 我需要创建一个简单的数据库以用于 Angular/Node 演示。将此类数据库添加到我的演示中的阻力最小的路径是什么?

javascript - 具有淡入淡出功能的 JQuery div 根据 div 高度淡出

javascript - SetInterval函数调用

javascript - 基于复选框或切换选择 (Tableau API) 在 Javascript 函数之间切换

javascript - 没有从 localStorage 获取与保存的变量相同的类型?

javascript - jquery ui 自动完成 id 和关闭事件 ui 参数

jQueryUI 自动完成 : Trigger on textbox focus

javascript - 如何添加监听空格键的按键事件处理程序?