请较:autocomplete只能匹配一次的问题

liuccc1 2009-09-22 11:59:20
问题:
后台返回数据中有"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();
}
}
...全文
302 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuccc1 2009-09-25
  • 打赏
  • 举报
回复
这个问题难道使用过jquery 的autocomplete都没有遇到过吗?
老紫竹 2009-09-22
  • 打赏
  • 举报
回复
在输入框第一次输入甲,可以匹配出甲乙丙丁张三李四
看看后台程序获得的参数和输出的内容

刷新页面重新输入甲,不能匹配出
再次看看后台程序获得的参数和输出的内容

一比对就很清楚了。
liuccc1 2009-09-22
  • 打赏
  • 举报
回复
liuccc1@163.com

不知你的是否有同样的问题:后台数据baidu","google","tencent","sohuwang","网易","甲乙丙丁张三李四, 我的是第一次输入b,可以匹配出baidu(下拉框只有baidu),刷新页面,再次输入b,下拉框全部显示,只是baidu的字母b颜色变粗,但是不会显示成只有baidu的情况;输入ba又可以匹配了。

还有个明显的情况是输入ba的方法,先输入b,再输入a,可以匹配baidu; 如果一次输入ba ,很多时候不能匹配;

现在我要的效果是一次输入一个字母,就能够准确匹配; (这问题我已经弄了2天了,还是不行)
z_j188 2009-09-22
  • 打赏
  • 举报
回复
给个邮箱,我发给你
liuccc1 2009-09-22
  • 打赏
  • 举报
回复
我写了个最简单的例子,后台不需要获得参数,直接输出后台数据;每次后台输出内容是一样的;
还有就是把数据不从后台servlet获取,直接在js中写死为一个数组,每次都能够成功匹配,
这难道是jquery这个autocomplete插件本来就有的问题?

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧