输入第一个字符 匹配的会加粗,但是不匹配的也会显示
输入第二个字符后,不匹配的才会被过滤
使用的是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"}
]
在后台控制逻辑就是了。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);
} */
}
});
}
});