autocomplete 加载上拉
autocomplete 加载下拉
autocomplete 就类似于百度搜索一样的文本框。当你属于一个a的时候下面会列出关于a的信息。
<input id="schoolName" name="printDto.schoolName" value="${printDto.schoolName}"//这个value是默认学校
需要的js
$(function() { var availableTags = getSchools(); $( "#schoolName" ).autocomplete({ source: availableTags }); });
//判断文本框是否是正确的学校名字。也就是下拉框的内容
function checkShooleNameExist(schoolName){ var url = "getSchool.html?ajax=true"; var params = {'schoolName':encodeURI(schoolName),'now':new Date()} var reulst=[]; $.ajax({ url: url, type: "POST", async:false, data:params, beforeSend: function(XMLHttpRequest){ //ShowLoading(); }, success: function(data, textStatus){ reulst = eval(data); }, complete: function(XMLHttpRequest, textStatus){ //HideLoading(); }, error: function(){ //请求出错处理 } }); return reulst; }
//用ajax读取后台获取到的所有的学校 function getSchools(){ var url = "findSchool.html?ajax=true"; var params = {'schoolName':'','now':new Date()} var reulst=[]; $.ajax({ url: url, type: "POST", async:false, data:params, beforeSend: function(XMLHttpRequest){ //ShowLoading(); }, success: function(data, textStatus){ reulst = eval(data); }, complete: function(XMLHttpRequest, textStatus){ //HideLoading(); }, error: function(){ //请求出错处理 } }); return reulst; }
我这里用了两个一样的方法。只是提交不同。。额。。看上去似乎有点繁琐哦。。没想到别的更好的方法哦。。
页面所需要的js:
<link rel="stylesheet" href="styles/jquery-ui-1.8.10.custom.css"/> <script src="scripts/jquery-1.4.4.min.js"></script> <script src="scripts/jquery.ui.core.js"></script> <script src="scripts/jquery.ui.widget.js"></script> <script src="scripts/jquery.ui.position.js"></script> <script src="scripts/jquery.ui.autocomplete.js"></script>
java代码:获取所有学校集合
public String find(){ schools = schoolManager.getSchools(schoolName); JSONArray jsonArray = new JSONArray(); for(School s :schools){ //JSONObject obj = new JSONObject(s); String name = s.getId().getXxmc(); jsonArray.put(name); } try { printTextToClient(jsonArray.toString()); } catch (Exception e) { log.debug("method:[find] err:"+e.getMessage()); e.printStackTrace(); } return null; } public String get(){ try { schoolName = java.net.URLDecoder.decode(schoolName,"UTF-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } schools = schoolManager.findSchool(schoolName); JSONArray jsonArray = new JSONArray(); for(School s :schools){ //JSONObject obj = new JSONObject(s); String name = s.getId().getXxmc(); jsonArray.put(name); } try { printTextToClient(jsonArray.toString()); } catch (Exception e) { log.debug("method:[find] err:"+e.getMessage()); e.printStackTrace(); } return null; } /** * 将结果返回给xmlRequest * * @param s * @param dictList * @return * @throws Exception */ public void printTextToClient(String result) throws Exception { getResponse().setContentType("text/html;charset=gbk"); getResponse().setCharacterEncoding("gbk"); PrintWriter out = getResponse().getWriter(); try { out.print(result); } finally { out.close(); } }
这里get 和find 方法没什么差的。。。所以有点纠结
struts配置
<action name="*School" class="schoolAction" method="{1}"> <result name="success" type="redirect-action">ajaxAction</result> </action>