sve*_*h42 5 jquery jquery-ui jquery-ui-autocomplete
当使用自动聚焦设置为true的jQueryUI自动完成时,如果键入太快并按Enter键,则第一个选择将替换您键入的内容,即使它不匹配.
例如,如果您输入"app",并且滚动自动完成的第一个选择是"apple",然后继续快速键入"applique"并按Enter键,则"applique"将替换为"apple".
在输入的文本被自动填充中的第一个选择替换之前,有没有办法确保第一个选择仍然与输入的文本匹配?
减少自动完成选项的延迟。如果您使用本地数据,则可以将延迟设置为 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)