【发布时间】:2016-08-22 18:13:55
【问题描述】:
代码解释如下。
这是我正在使用的自动完成功能(但我检查了其他 3 个自动完成包,它们的行为方式都相同):
https://goodies.pixabay.com/javascript/auto-complete/demo.html
这是我在客户端使用它的方式(请注意,我将自动完成功能与 socket.io 结合使用,以便在用户在搜索框中键入内容时更新我的自动完成功能) :
socket.on('searchBarResults', function(data) {
var my_autoComplete = new autoComplete({
selector: 'input[name="searchbar4"]',
minChars: 1,
cache: false,
source: function(term, suggest){
term = term.toLowerCase();
var choices = [
data[0]._source.movie
];
var matches = [];
for (i=0; i<choices.length; i++)
if (~choices[i].toLowerCase().indexOf(term)) matches.push(choices[i]);
suggest(matches);
}
});
$searchBar4.on('input', function(event){
my_autoComplete.destroy();
});
});
这就是这一切所做的:当用户开始输入电影的名称时,在他们输入的每个单词之后,服务器都会在数据库中搜索匹配项,并将结果发送给客户端。
例如:如果用户搜索Star,服务器会发回Star Trek Undiscovered Country,并且搜索框会显示自动完成选项 称为星际迷航未知国。
这一切都很好。
如果用户键入 Star Trek,服务器将再次发送回 Star Trek Undiscovered Country,并且自动完成功能将更新。没关系。
这是我遇到的问题:
如果用户输入Star Country,服务器将发回Star Trek Undiscovered Country,但自动完成 不会显示它。
仅当单词按顺序(您不能跳过单词)时,自动完成才会显示结果。
无论用户在搜索框中输入单词的顺序如何,我如何才能让自动完成功能始终显示来自服务器的结果?
【问题讨论】:
标签: jquery autocomplete