手动触发 jQuery 自动完成

Posted

技术标签:

【中文标题】手动触发 jQuery 自动完成【英文标题】:Trigger jQuery Autocomplete manually 【发布时间】: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 结果已被获取和处理时,将出现弹出窗口。你确定你明白吗? 【参考方案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())

【讨论】:

以上是关于手动触发 jQuery 自动完成的主要内容,如果未能解决你的问题,请参考以下文章

jquery怎么自动触发radio的点击事件

jQuery 自动完成触发更改事件

未触发 JQuery 自动完成选择事件

选择时jQuery自动完成触发器返回

如何使用 AJAX 自动完成触发 JQuery

直到用户在输入字段之外单击才会触发自动完成 jQuery 更改