jquery autocomplete触发器下拉输入:focus

时间:2012-06-23 09:39:33

标签: jquery autocomplete jquery-ui-autocomplete

我正在使用下面流行的JQuery Autocomplete插件。

http://jqueryui.com/demos/autocomplete/

目前,如果您输入短语,则会显示下拉菜单,但是当您点击它时会隐藏它。这可以。但是,返回下拉菜单的唯一方法是单击输入字段并键入更多字符或按下keydown。

有关如何在用户点击输入字段时触发结果下拉列表的任何想法?我试图触发输入字段的焦点事件,但这不起作用。当输入字段被聚焦时,我需要手动调用自动完成下拉事件。感谢。

3 个答案:

答案 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(或autocompletetextbox)事件:

$('#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", "");
            }
        });