引入的包:
<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();
}
}
}
這種方法的弊端是:如果你先輸入第一個字它是不會自動提示的,只有第二次輸入的時候才能提示,因為第一次它只是給變數賦值,第二次才能讀取逐個變數來進行提示。