【问题标题】:Trigger jQuery Autocomplete manually手动触发 jQuery 自动完成
【发布时间】:2012-11-21 02:23:55
【问题描述】:

我正在使用带有一些 AJAX 的 jQuery UI 自动完成功能(直到他们停止输入数据才会被提取)。我想这样做,一旦找到数据,自动完成将作为搜索结果弹出。这有效,但是只有当我再次开始输入时(下拉菜单在我输入之前不会触发,因为它在我停止输入之后才被初始化)。

我的代码:

var availableTags = [
    "Perl",
    "PHP",
    "Python",
    "Ruby"
];
$('input#mainSearchBox').autocomplete({
    source: availableTags,
        minLength: 0
});
    $('input#mainSearchBox').data('autocomplete').menu.active;

最后一部分是尝试激活自动完成功能,但失败了。

【问题讨论】:

  • 您正在使用 自动完成和一些 AJAX。在这种情况下,当 (i) 您输入了 minLength 个字符 (ii) 自上次击键后延迟毫秒 (iii) Ajax 结果已被获取和处理时,将出现弹出窗口。你确定你明白吗?

标签: javascript jquery ajax search autocomplete


【解决方案1】:

您可以使用以下脚本手动切换自动完成功能:

var textbox = $('input#mainSearchBox');
var autocompleteBox = textbox.autocomplete('widget');

// toggle the autocomplete widget
autocompleteBox.is(':hidden') ? 
    textbox.autocomplete('search', textbox.val()).focus() :
    autocompleteBox.hide();

此代码可在 jquery 自动完成演示站点上的 combobox example 的源代码中找到(第 127-141 行)。

【讨论】:

    【解决方案2】:

    search method 应该可以解决问题:

    $('input#mainSearchBox').autocomplete("search");
    

    Fiddle

    【讨论】:

    • 啊!天哪,我用过: $('input#mainSearchBox').autocomplete('search', 'demo-value');我应该删除那个...
    • 哈哈,minLength 是这里的关键。没有它就不行。
    • 是的,搜索方法是正确的!
    【解决方案3】:

    对于https://github.com/devbridge/jQuery-Autocomplete,您可以使用:

    $('input#mainSearchBox').autocomplete("getSuggestions", $('input#mainSearchBox').val())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      相关资源
      最近更新 更多