我正在寻找一个 JQuery 自动完成功能,它将:
- 搜索部分匹配
- 突出显示所有出现的事件
- 允许多个单词
- 允许远程数据源(即 PHP 根据每次按键动态更新的查询字符串过滤数据库结果)
所以例如
搜索:“我回家”
返回:“告诉我回家的路”
我很难找到可以提供此功能的东西,尽管人们普遍期望谷歌风格的自动完成功能。
jquery ui 自动完成的猴子补丁(jQueryUI:如何自定义格式自动完成插件结果?)接近,但似乎不提供动态远程数据源。
我也接近了以下脚本:
var termTemplate = "<span class='ui-autocomplete-term'>%s</span>";
$("#f input").autocomplete({
source: "livesearch.php",
open: function(e, ui) {
var origKeyword = $("#f input").val();
var acData = $(this).data('autocomplete');
acData.menu.element.find('a').each(function() {
var me = $(this);
var regex = new RegExp(acData.term, "gi");
me.html(me.text().replace(regex, function(matched) {
return termTemplate.replace('%s', matched);
}));
});
},
select: function(event, ui) {
var keyword = $("#f input").val();
$("#f input").val('');
window.location.href = 'MYURLHERE?VARIABLE=' + ui.item.value;
return false;
},
focus: function(event, ui) {
return false;
}
});
但是,它不处理突出显示由空格分隔的多个单词。
如果有人有任何建议,我将不胜感激。