我正在写一个简单的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;
答案 0 :(得分:0)
嗯,尝试尝试最后我解决了它:function arrayUniqueForHashtag()
function arrayUniqueForHashtag(array) {
var a = array.concat();
for(var i=0; i<a.length; ++i) {
for(var j=i+1; j<a.length; ++j) {
if(a[i].name == a[j].name)
a.splice(j--, 1);
}
}
return a;
}
调用缓存键搜索:return false;
最后代码:
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 = arrayUniqueForHashtag(fallback.concat(dl));
callback(dl);
}
else
callback(null);
} else {
callback(null);
}
}
});
立即处理缓存数据。