我正在使用下面流行的JQuery Autocomplete插件。
http://jqueryui.com/demos/autocomplete/
目前,如果您输入短语,则会显示下拉菜单,但是当您点击它时会隐藏它。这可以。但是,返回下拉菜单的唯一方法是单击输入字段并键入更多字符或按下keydown。
有关如何在用户点击输入字段时触发结果下拉列表的任何想法?我试图触发输入字段的焦点事件,但这不起作用。当输入字段被聚焦时,我需要手动调用自动完成下拉事件。感谢。
答案 0 :(得分:27)
工作演示 http://jsfiddle.net/CNYCS/
冷却;所以你需要做的就是bind
焦点事件与自动完成,休息`自动完成将从那里接管,你可以在演示中看到。
有用的链接:http://forum.jquery.com/topic/how-to-bind-focus-input-to-trigger-autocomplete & http://docs.jquery.com/UI/Autocomplete#method-search
希望这有帮助,
Rest代码在jsfiddle中。
<强>码强>
$( "#tags" ).autocomplete({
source: availableTags,
minLength:0
}).bind('focus', function(){ $(this).autocomplete("search"); } );
答案 1 :(得分:2)
根据doc,没有明显的方法可以这样做。但您可以尝试使用focus
启用click
上的keyup
(或autocomplete
或textbox
)事件:
$('#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
<强> DEMO 强>
答案 2 :(得分:0)
添加到上面给出的代码中。就我而言,availableTags是从服务器值加载的。因此,我只想在该值为空时才打开弹出窗口-这样可以节省不必要的触发器,以便服务器再次将标签重新聚焦。
$( "#tags" ).autocomplete({
source: availableTags,
minLength:0
}).bind('focus', function () {
if ($(this).val().length == 0) {
$(this).autocomplete("search", "");
}
});