jQuery autocomplete 输入一个字符会显示所有数据,输入两个字符后进行过滤

输入第一个字符 匹配的会加粗,但是不匹配的也会显示
输入第二个字符后,不匹配的才会被过滤

使用的是jquery.autocomplete.js
使用 外部json数据

$("#Test").autocomplete("json/test.json", {

width:150,

max:10,

dataType: 'json',
minChars: 1, //自动完成激活之前填入的最小字符
autoFill: false, //自动填充
minLengthType:2,
//加入对返回的json对象进行解析函数,函数返回一个数组

parse:function(data){
var rows=[];
for(var i=0;i<data.length;i++){
rows[rows.length]= {
data:data[i].label,
value:data[i].label,
result:data[i].label
};
}
for(var i=0;i<data.length;i++){
//alert(rows[i].data);
}
return rows;
},
formatItem:function(row,i,n){
alert("yes"+row+i);
return row;
},
formatMatch: function(data, i, total) {
//alert("yes"+data);
return data;
},formatResult: function(row){
// alert("yes"+row);
return row;//要显示在文本框的子字段;

}

});

数据
[
{"label" : "Aragorn"},
{"label" : "Arwen"},
{"label" : "Bilbo Baggins"},
{"label" : "Boromir"},
{"label" : "Frodo Baggins"},
{"label" : "Gandalf"},
{"label" : "Gimli"},
{"label" : "Gollum"},
{"label" : "Legolas"},
{"label" : "Meriadoc Merry Brandybuck"},
{"label" : "Peregrin Pippin Took"},
{"label" : "Samwise Gamgee"}
]

dd
dd

在后台控制逻辑就是了。http://blog.csdn.net/chinacsharper/article/details/17473157

test.json是静态文件吧?那样就是返回多少数据就显示多少数据了。一般是动态页依据输入的关键字过滤后输出匹配的。

楼主应该先用jquery的ajax下载这个json文件数据后,使用客户端的数据来匹配,而不是每次从服务器下载

这个autocomplete是哪个写的?不是jqueryui的,自己找API来看客户端数据自动完成是怎样配置的

 $.getJSON("json/test.json",function(data){
//将data处理成需要格式后再初始化autocomplete,自己找相关API来看
$("#Test").autocomplete(data,{..配置.});
});

$("#queryCon").autocomplete({
select:function(event,ui){
alert(ui);
},
source:function(request,response){
$.ajax({
type:"post",
url:"loginJson.do",
dataType:"json",
success:function(data){
response($.map(data.result,function(item){
//alert(item.usr);
return {
label:item.usr,
value:item.pwd

                    };
                    }));
                //alert("yes");
                //alert(data.password);
                //var n=data.length;
                /* for(var i=0;i<n;i++){
                    alert(data.result[i].usr);
                } */
            }
        });
    }
});