Я пишу простой скрипт завершения тега textarea. Так как я могу кешировать старые результаты?
Я пытаюсь следующий код:
var lastQuery = term.toLowerCase();
if(fallback[0]){
var dl = [];
for(k=0; k<fallback.length; k++){
var name = fallback[k].name.toLowerCase();
if( name.substr(0, lastQuery.length) == lastQuery ){
dl.push(fallback[k]);
}
}
if(dl[0]){
callback(dl); // "callback" Dropdown trigger
return false;
}
else
return true;
// .......... following the autocomplete function ...........
Я использую для слияния: fallback.concat(dl)
, "dl"
- это успешные данные по автозаполнению.
Но массив не unique
и это проблема.
Это полные коды:
var lastQuery = term.toLowerCase();
if(fallback[0]){
var dl = [];
for(k=0; k<fallback.length; k++){
var name = fallback[k].name.toLowerCase();
if( name.substr(0, lastQuery.length) == lastQuery ){
dl.push(fallback[k]);
}
}
if(dl[0]){
callback(dl);
return false;
}
else
return true;
}
// Here is autocomplete function
$.ajax({
url: homeurl+'/api/hashtag/index.php',
type: "POST",
dataType: 'json',
data: { query: term },
success: function (data) {
var x = data;
if(x.hashtag){
var dl = [];
for(i=0; i<x.hashtag.length; i++){
var name = x.hashtag[i].name.toLowerCase();
if( name.substr(0, lastQuery.length) == lastQuery ){
dl.push(x.hashtag[i]);
}
}
if(dl[0]){
fallback = fallback.concat(dl);
callback(dl);
}
else
callback(null);
} else {
callback(null);
}
}
});
Сноска: return false;
Неправильно (не в dom, просто скрипт прекратит работу) после нескольких нажатий клавиш ...
if(dl[0]){
callback(dl);
return false;
}
else
return true;