コードの説明は次のとおりです。ここでオートコンプリートでサーバーの結果が表示されない場合があります
は、私が使用しています(私は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 Undiscovered Country **の結果が得られます。私はより多くのテストを行い、後で確認するつもりです。 – MonkeyOnARock
ええ、間違っていました。私は、動作するスニペットでコードを更新しました。 – smoksnes