请较:autocomplete只能匹配一次的问题
问题:
后台返回数据中有"baidu","google","tencent","sohuwang","网易","甲乙丙丁张三李四", 在输入框第一次输入甲,可以匹配出甲乙丙丁张三李四",刷新页面重新输入甲,不能匹配出;但是输入甲乙,可以匹配出,但是刷新页面后,输入甲乙又不能匹配出了,只有输入甲乙丙才行;
总的来说就是输入的只能匹配一次,下次就不行了;
前台JSP:
$(document).ready(function(){
$("#text2").autocomplete("/AutoCompleteServlet2",{
minChars: 0, //激活自动完成的输入字符数
max: 15, //列表里显示条数,默认为10
matchContains: true, //只要包含输入字符就会显示提示
autoFill: false, //自动填充输入框
mustMatch: true, //与否必须与自动完成提示匹配
scrollHeight: 200, //显示下拉的列表框长度
dataType: 'json', //数据格式
parse: function(data){ //转换数据格式
var rows = [];
for(var i=0;i<data.length;i++){
rows[rows.length] = {
data: data.name, //下拉框显示数据格式
value: data.id + "-" +data.name, //选定后实际数据格式
result: data.name //选定后输入框显示数据格式
};
}
return rows;
},
formatItem: function(data,i,total){
return data;
}
});
function findValueCallback(event,data,formatted){
alert(data);
}
});
<input type="text" id="text2"><input type="button" id="btn" value="取值">
<div id="content"></div>
后台servlet:
public class AutoCompleteServlet2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.write(getJson());
out.flush();
out.close();
}
/**
* autocomplete默认调用的是doGet方法
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
private String getJson(){
//实际值
String[] id = {"1111111","2222222","3333333","4444444","5555555","6666666"};
//页面显示值
String[] name = {"baidu","google","tencent","sohuwang","网易","甲乙丙丁张三李四"};
StringBuffer sb = new StringBuffer("[");
for(int i = 0;i < id.length;i++){
sb.append("{id:'" + id + "',name:'" + name + "'},");
}
sb.deleteCharAt(sb.lastIndexOf(",")).append("]");
return sb.toString();
}
}