此处的示例代码:http://jsbin.com/etaziy(使用http://jqueryui.com/demos/autocomplete/)
如果你输入'j',你会得到3个名字,'John''Jack'和'Joe'。如果你模糊了,我清除输入,只需输入val('')。然后,如果你回到输入,并再次输入'j',没有任何反应?直到你键入第二个匹配的字母才能显示弹出窗口。
我的例子看起来有点奇怪,但实质上这是我正在努力的一个真正的缩减版本。我需要在blur()之后清除输入,并在选择后清除它。这样做会使后续选择看起来很麻烦。
我部分地认为这是预期的功能,但出于我的目的,它不是我想要的。一旦输入任何字母,我真的需要弹出列表来显示。
干杯。
答案 0 :(得分:11)
问题是自动完成会在内部跟踪它匹配的值,因此当您第一次键入j
时,它会将此内部值设置为“j”,然后它不会重置为空将输入更改为空时的字符串。
查看自动完成源后,我无法找到如何直接访问内部变量,但是一旦您将输入更改为空,您可以通过运行其他搜索强制自动完成为您更新它(并且长度为零,它实际上不会进行搜索)。
$(function() {
$("#search").autocomplete({
source: data,
change: function() { // Triggered when the field is blurred, if the value has changed; ui.item refers to the selected item.
$("#search").val("");
$("#search").autocomplete("search", ""); //THIS IS THE NEW LINE THAT MAKES IT HAPPY
}
});
});
答案 1 :(得分:4)
只需替换jquery.ui.autocomplete.js
if ( self.term != self.element.val() ) { // only search if the value has changed
if(true){