7

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

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

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

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

4

3 回答 3

37

工作演示 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

希望这可以帮助,

其余代码在 jsfiddle 中。

代码

  $( "#tags" ).autocomplete({
        source: availableTags,
        minLength:0
    }).bind('focus', function(){ $(this).autocomplete("search"); } );
于 2012-06-23T09:48:48.750 回答
2

根据文档,没有明显的方法可以这样做。但是您可以尝试在enabled上使用focus(or clickor 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

演示

于 2012-06-23T09:46:27.770 回答
0

添加到上面给出的代码。在我的情况下,availableTags 是从服务器值加载的。因此,我只想在值为空白的情况下打开弹出窗口 - 这为服务器节省了不必要的触发器,以便再次在焦点上加载标签。

$( "#tags" ).autocomplete({
        source: availableTags,
        minLength:0
    }).bind('focus', function () {
            if ($(this).val().length == 0) {
                $(this).autocomplete("search", "");
            }
        });
于 2019-06-05T03:59:19.253 回答