+ -
当前位置:首页 → 问答吧 → 请较:autocomplete只能匹配一次的问题

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

时间:2009-09-22

来源:互联网

问题:
后台返回数据中有"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();
    }
}

作者: liuccc1   发布时间: 2009-09-22

我的邮箱:[email protected] ,有高手有无此问题的例子可以发份给我学习学习

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

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

现在我要的效果是一次输入一个字母,就能够准确匹配; (这问题我已经弄了2天了,还是不行)

作者: liuccc1   发布时间: 2009-09-23

我和你遇到同样的问题
我用的是struts2

作者: sss520   发布时间: 2009-09-24

兄弟解决了这样的问题请帖出来看看

作者: sss520   发布时间: 2009-09-24

到目前为止还是没有解决,不管是否使用struts2,问题都是一样的,期待高手相助

作者: liuccc1   发布时间: 2009-09-25

相关阅读 更多