我正在使用下面这个流行的 JQuery 自动完成插件。
http://jqueryui.com/demos/autocomplete/
目前,当您输入短语时,下拉菜单会出现,但是当您点击其他地方时它就会隐藏。这很好。然而,唯一使下拉菜单重新出现的方法是要么在输入字段中再次点击并输入更多字符,要么按下键盘上的按键。
有没有办法在用户点击输入字段时触发结果的下拉菜单?我尝试了为输入字段触发焦点事件,但那行不通。我需要在输入字段获得焦点时手动调用自动完成下拉菜单事件。谢谢。
我正在使用下面这个流行的 JQuery 自动完成插件。
http://jqueryui.com/demos/autocomplete/
目前,当您输入短语时,下拉菜单会出现,但是当您点击其他地方时它就会隐藏。这很好。然而,唯一使下拉菜单重新出现的方法是要么在输入字段中再次点击并输入更多字符,要么按下键盘上的按键。
有没有办法在用户点击输入字段时触发结果的下拉菜单?我尝试了为输入字段触发焦点事件,但那行不通。我需要在输入字段获得焦点时手动调用自动完成下拉菜单事件。谢谢。
工作演示 http://jsfiddle.net/CNYCS/
很棒,所以你需要做的就是将focus
事件与自动完成绑定,剩下的内容`autocomplete`会接管,如演示中所示。
有用的链接:http://forum.jquery.com/topic/how-to-bind-focus-input-to-trigger-autocomplete&http://docs.jquery.com/UI/Autocomplete#method-search
希望这可以帮助你,
剩余的代码在jsfiddle中。
代码
$( "#tags" ).autocomplete({
source: availableTags,
minLength:0
}).bind('focus', function(){ $(this).autocomplete("search"); } );
根据文档,没有明显的方法可以这样做。但是您可以尝试在启用了自动完成的文本框
上使用focus
(或click
或keyup
)事件:
$('#autocomplete').trigger("keyup");
或者
$('#autocomplete').trigger("focus");
或者
$('#autocomplete').trigger("click");
正如@Tats_innit所提到的代码,之后您只需要添加这行代码即可:
$('#tags').trigger("focus"); // as @Tats_innit's solution bind focus
// so you need to trigger focus
:)
很高兴这些日子我没有和你的解决方案搞砸 :P 无论如何,下面是 OP 的演示差异 +! - Tats_innit在上面给出的代码中添加。 在我的情况下,availableTags 是从服务器值加载的。 因此,如果该值为空,我只想打开弹出窗口-这样可以节省服务器在焦点上再次加载标签的不必要触发器。
$( "#tags" ).autocomplete({
source: availableTags,
minLength:0
}).bind('focus', function () {
if ($(this).val().length == 0) {
$(this).autocomplete("search", "");
}
});