在GOOGLE使用中,可以根据输入的内容显示出很多相似的可选项,如输入“大片”,底下就罗列出“大片电影”、“大片下载”、“大片推荐”...
现在想实现类似功能,就是输入一个编号如“20070122”在输入时从数据库表中编号字段中将与这个编号相近的编号一一罗列出来。如输入“200701”,则出现“20070111”、“20070120”、“20070122”...
请问如何实现,能否具体点指示?

解决方案 »

  1.   

    SQL语句的模糊查询 like %查询内容% 就可以。
      

  2.   

    当输入的内容改变的时候,可以用ajax的方式提交,到后台做模糊检索,把结果显示到文本框里。
    不知道楼主有没有研究过struts2中的autocompleter,有时间的画简易楼主看一下,也许能参考到。
      

  3.   

    那你用ajax输入一个字符提交一次 SQL 就按1楼的办法
      

  4.   

    你要是用struts2的标签的话,很容易就能实现。否则的话,首先你要做一个这样可编辑的下拉框就比较麻烦。
    下面是一个用ajax实现的比较简单的填充的例子。当光标从文本框上移走是自动填充。
    index.htmfunction doAutoComplete(obj){
    var url = "servlet/SelUserName?inputUserName="+obj.value; 
    if (window.XMLHttpRequest) { 
    req = new XMLHttpRequest(); 
    }else if (window.ActiveXObject) { 
    req = new ActiveXObject("Microsoft.XMLHTTP"); 

    if(req){ 
    req.open("GET",url, true); 
    req.onreadystatechange = doFinish; 
    req.send(null); 

    }
    function doFinish(){
    if (req.readyState == 4) { 
    if (req.status == 200) { 
    var userName = req.responseXML.getElementsByTagName("userName")[0].firstChild.data; 
    document.getElementById("userName").value=userName;
    }
    }
    }
    <input name="userName" onChange="doAutoComplete(this)">
    web.xml <servlet>
    <servlet-name>SelUserName</servlet-name>
    <servlet-class>
    com.test.servlet.SelUserName
    </servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>SelUserName</servlet-name>
    <url-pattern>/servlet/SelUserName</url-pattern>
    </servlet-mapping>
    Servletpackage com.test.servlet;
    import java.io.IOException;
    import java.io.PrintWriter;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class SelUserName extends HttpServlet { public SelUserName() {
    super();
    } public void destroy() {
    super.destroy();
    } public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/xml");
    response.setHeader("Cache-Control", "no-cache");
    String inputUserName = request.getParameter("inputUserName");
    StringBuffer sb = new StringBuffer("<userName>");
    if ("a".equals(inputUserName)){
    sb.append("a_user_001");
    } else if("b".equals(inputUserName)) {
    sb.append("b_user_101");
    }
    sb.append("</userName>");
    PrintWriter out = response.getWriter();
    out.write(sb.toString());
    out.close();
    }
    }
    当输入a一走光标时,自动填充a_user_001,输入b时自动填充b_user_101