jQuery自动完成自动对焦无法跟上

sve*_*h42 5 jquery jquery-ui jquery-ui-autocomplete

当使用自动聚焦设置为true的jQueryUI自动完成时,如果键入太快并按Enter键,则第一个选择将替换您键入的内容,即使它不匹配.

例如,如果您输入"app",并且滚动自动完成的第一个选择是"apple",然后继续快速键入"applique"并按Enter键,则"applique"将替换为"apple".

在输入的文本被自动填充中的第一个选择替换之前,有没有办法确保第一个选择仍然与输入的文本匹配?

Pri*_*ark 3

减少自动完成选项的延迟。如果您使用本地数据,则可以将延迟设置为 0。默认情况下,它设置为 300 (ms)。因此,按下某个键后,需要 300 毫秒才能重新评估数据集是否匹配。

所以,基本上你的自动聚焦在第一个项目上,并且在按回车键之前没有给它一个重新过滤的机会。

或者,您可以在第一次自动对焦后更改流中延迟。因此,第一次等待 300 毫秒来显示建议,然后在焦点事件中,将计时器减少到 0 毫秒,以便更快地过滤列表。

但要小心,如果是远程数据,延迟为 0 可能会导致问题。像这样的东西可能效果很好:

$(".selector").autocomplete({
  delay: 300,
  focus: function () {
    $(".selector").autocomplete("option", "delay", 0);
  },
  source: sourceData
}
Run Code Online (Sandbox Code Playgroud)