手动触发 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 自动完成的主要内容,如果未能解决你的问题,请参考以下文章