【发布时间】:2018-05-05 14:40:37
【问题描述】:
我正在编写一个简单的 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;
【问题讨论】:
标签: javascript ajax merge autocomplete unique