自行的javascript+autocomplete實現自動提示

來源:互聯網
上載者:User

引入的包:

<script type='text/javascript' src='njs/jquery/jquery-autocomplete/jquery.autocomplete.js'></script>
 <link rel="stylesheet" type="text/css" href="njs/jquery/jquery-autocomplete/jquery.autocomplete.css" />

 

js代碼:

 

var i=0;
var jtcmNames = ['','',''];
function change(valu){
//alert(jtcmNames);
var doc_value = valu.value;
 if(i==doc_value.length){
 
 }else{
  i=doc_value.length;
  doc_value=encodeURI(encodeURI(valu.value));
  createXmlHttp();
  xmlHttp.open("POST", "autocomplete.do?input_content="+doc_value, false);
  xmlHttp.send(null);
  var names = xmlHttp.responseText;
  jtcmNames=names.split("|");//接收到伺服器端的資料以後,我們要對這個資料進行解析,時期成為json格式的資料,其實就是數組
  //alert(jtcmNames);
  $("#column04").autocomplete(jtcmNames,{matchContains: true,autoFill: false});
  xmlHttp.closed;
 }
}

 

struts-config.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
 <form-beans>
 
 </form-beans>
 <action-mappings>
    <action path="/autocomplete" parameter="#" type="com.sitech.ismp.iimp.common.action.AutoCompleteAction" scope="request" validate="false">
   <forward name="default" path="/common/getAllDealedList.jsp" />
  </action>
   </action-mappings>
</struts-config>

 

 

 

action:

 

 

public void autocomplete(ActionMapping mapping,
   ActionForm actionForm, HttpServletRequest request,
   HttpServletResponse response) throws Exception {
  
  String query_value = java.net.URLDecoder.decode(request.getParameter("input_content"),"utf-8");//將資料轉碼,必須是這種轉碼,因為在jsp頁面也是這樣轉的,保持一致
  TblSYS_LOGINMSG user = (TblSYS_LOGINMSG) request.getSession()
            .getAttribute(TblSYS_LOGINMSG.SESSION_KEY);//這隻是擷取目前使用者
  String login_id = null;
  if ((user != null) && !user.equals("")) {
   login_id = user.getLOGIN_ID();
  }
  request.setCharacterEncoding("utf-8");  
  response.setContentType("text/html");  
  response.setCharacterEncoding("utf-8");  
  SYS_LOGINMSGDao autoCompleteDao = new SYS_LOGINMSGDao();
  if(query_value != null && !query_value.trim().equals("")){
   
   List autoCompleteList = autoCompleteDao.findTitleForJSName(query_value,login_id);
           if(autoCompleteList!=null&&!autoCompleteList.isEmpty()) {
          query_value = IbsmUtil.getJsArrayFromList(autoCompleteList, "TITILE");
          response.getWriter().append(IbsmUtil.getJsArrayFromList(autoCompleteList, "TITILE"));
       response.getWriter().flush();
       response.getWriter().close();
         }
  }

 }

 

 

這種方法的弊端是:如果你先輸入第一個字它是不會自動提示的,只有第二次輸入的時候才能提示,因為第一次它只是給變數賦值,第二次才能讀取逐個變數來進行提示。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.