代碼說明如下。自動完成有時不顯示服務器的結果
這裏是我使用的是自動完成(但我已經研究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();
});
});
所以這是所有這是這樣做的:當用戶開始輸入電影的名字時,在他們進入服務器的每個單詞之後搜索數據庫中的匹配,並將結果發送到客戶端。
例如:如果用戶搜索星,服務器會發送回星際迷航未被發現的國家,和搜索框會顯示名爲星際迷航未被發現的國家的自動完成選項。
這是行之有效的,所有。
如果用戶鍵入星際迷航服務器將再次發回星際迷航未被發現的國家,並自動完成將更新。沒關係。
這裏是我的問題:
如果用戶鍵入星級鄉村,服務器將發回星際迷航未被發現的國家,但自動完成不會顯示。
如果單詞的順序是(不能跳過單詞),自動完成只會顯示結果。
我怎樣才能得到自動完成到總是顯示服務器的結果,無論用戶在搜索框中輸入什麼字詞?
它似乎沒有工作。具體來說,關於'indexOf(word)== -1',它是關於使用'(word)'的說法:*可能對意外(定製/繼承)成員進行迭代,可能缺少hasOwnPropery ... * – MonkeyOnARock
好吧,我改變了'indexOf(word)== -1'到'indexOf(word)== 0',它最初似乎正在工作。如果我輸入** Star Country **,我現在可以獲得完整的** Star Trek未發現國家**結果。我將進行更多測試並稍後確認。 – MonkeyOnARock
是的,這是錯的。我已經使用工作片段更新了代碼。 – smoksnes