Service方法:
/** * 循环获取各级地址封装到jsonObject * @return */ public JSONObject adderssAll(){ JSONObject jsonObject = new JSONObject(); List<Map<List<String>,JSONArray>> objList = new ArrayList<Map<List<String>,JSONArray>>(); List<Map<List<String>,JSONArray>> temporary = new ArrayList<Map<List<String>,JSONArray>>(); Map<List<String>,JSONArray> provincial = this.adderss(0,0); temporary.add(provincial); int b = 4; for (int a = 0; a < b; a++) { objList = new ArrayList<Map<List<String>,JSONArray>>(); objList = temporary; temporary = new ArrayList<Map<List<String>,JSONArray>>(); for (Map<List<String>,JSONArray> obj : objList) { for (List<String> taskList : obj.keySet()) { String parentId = ""; for (int i = 0; i < taskList.size(); i++) { String[] str = taskList.get(i).split("/"); if (a != 3) { Map<List<String>, JSONArray> municipal = this.adderss(Integer.parseInt(str[0]), 1); temporary.add(municipal); } parentId = str[1]; } if (!"".equals(parentId) && parentId!=null){ jsonObject.put(parentId, obj.get(taskList)); } } } } return jsonObject; } /** * 根据父类ID获取各级地址记录 * @param parentId * @param type * @return */ public Map<List<String>,JSONArray> adderss(Integer parentId, Integer type){ Map<List<String>,JSONArray> param = new HashMap<List<String>,JSONArray>(); CityAddress record = new CityAddress(); record.setParentId(parentId); JSONArray jsonArray = new JSONArray(); List<String> codeList = new ArrayList<String>(); List<CityAddress> cityAddressList = this.findAll(record); for (int i = 0; i < cityAddressList.size(); i++){ JSONObject jsonObject = new JSONObject(); jsonObject.put("i",cityAddressList.get(i).getCode()); jsonObject.put("n",cityAddressList.get(i).getName()); if (type == 0) { String s = this.firstFight(cityAddressList.get(i).getName()); jsonObject.put("s", s); } codeList.add(cityAddressList.get(i).getCode()+"/"+cityAddressList.get(i).getParentId()); jsonArray.put(jsonObject); } param.put(codeList,jsonArray); return param; } /** * 省级地址排序 * @param name * @return */ public String firstFight(String name){ String[] adder = new String[]{"安/a","澳/a","北/b","重/c","福/f","广/g","贵/g","甘/g", "河/h","海/h","黑/h","湖/h","吉/j","江/j","辽/l","内/n","宁/n","青/q", "山/s","上/s","四/s","陕/s","天/t","台/t","西/x","新/x","香/x","云/y","浙/z"}; for (String str : adder){ String[] adderss = str.split("/"); if (name.contains(adderss[0])){ return adderss[1]; } } return null; }
address.min.js:
!(function(b) { var c = {}; b.fn.address = function(h) { c = h; }; b.fn.Address = function(k) { var F = b.extend({ callback: function() {} }, k); b(this).bind("click", function() { l.css("display", "block") }); var l = b("<div>").attr("id", "city-select"); b(this).after(l); var i = b("<div>").attr("id", "city-select-tab"); l.append(i); var t = b("<a>").attr("href", "javascript:void(0);").addClass("current").attr("id", "tab_province").html("省份"); var H = b("<a>").attr("href", "javascript:void(0);").attr("id", "tab_city").html("城市"); var e = b("<a>").attr("href", "javascript:void(0);").attr("id", "tab_district").html("县区"); var s = b("<a>").attr("href", "javascript:void(0);").attr("id", "tab_street").html("街道"); i.append(t).append(H).append(e).append(s); var y = function() { b("#city-select-tab").find(".current").removeClass("current"); b(this).addClass("current"); b("#city-select-content").find(".current").removeClass("current"); var j = b(this).attr("id"); if (j == "tab_province") { b("#city-province").addClass("current") } else { if (j == "tab_city") { b("#city-city").addClass("current") } else { if (j == "tab_district") { b("#city-district").addClass("current") } else { b("#city-street").addClass("current") } } } }; b("#city-select-tab").children("a").each(function(j, m) { b(this).bind("click", y) }); var o = b("<div>").attr("id", "city-select-content"); l.append(o); var g = function(j, J, m, p) { var K = b("<dl>"); j.append(K); if (p) { var n = b("<dt>").html(J); K.append(n) } var M = b("<dd>"); K.append(M); for (var q = 0; q < m.length; q++) { var L = b("<a>").html(m[q].n).attr("attr-id", m[q].i).attr("href", "javascript:void(0);").attr("title", m[q].n); L.bind("click", r); M.append(L) } }; var r = function() { var K = parseInt(b(this).attr("attr-id")); var n = a(K); var p = b(this).closest(".city-wrapper"); p.find(".selected").removeClass("selected"); b(this).addClass("selected"); var m = p.attr("id"); var q = new Array(); var J = new Array(); b("#city-select-content").find(".selected").each(function(L, M) { q[L] = b(this).attr("title"); J[L] = b(this).attr("attr-id") }); if (m == "city-province") { h.html(""); b("#tab_city").trigger("click"); g(h, null, n, false); F.callback(q, J) } else { if (m == "city-city") { C.html(""); b("#tab_district").trigger("click"); g(C, null, n, false); F.callback(q, J) } else { if (m == "city-district") { w.html(""); b("#tab_street").trigger("click"); g(w, null, n, false); F.callback(q, J) } else { F.callback(q, J); l.css("display", "none") } } } }; var I = b("<div>").attr("class", "city-wrapper").attr("id", "city-province").addClass("current"); o.append(I); var d = a(0); var E = new Array(); var v = new Array(); var z = new Array(); var G = new Array(); d.sort(function(m, j) { return m.s.charCodeAt() - j.s.charCodeAt() }); var B = 0, A = 0, x = 0, u = 0; for (var D = 0; D < d.length; D++) { var f = d[D].s.charCodeAt(); if (96 < f && f < 104) { E[B] = d[D]; B++ } else { if (103 < f && f < 108) { v[A] = d[D]; A++ } else { if (107 < f && f < 116) { z[x] = d[D]; x++ } else { G[u] = d[D]; u++ } } } } g(I, "A-G", E, true); g(I, "H-K", v, true); g(I, "L-S", z, true); g(I, "T-Z", G, true); var h = b("<div>").attr("class", "city-wrapper").attr("id", "city-city"); o.append(h); var C = b("<div>").attr("class", "city-wrapper").attr("id", "city-district"); o.append(C); var w = b("<div>").attr("class", "city-wrapper").attr("id", "city-street"); o.append(w) }; var a = function(d) { return c[d] }; })(jQuery);
admin.js:
function sendRequest(requsetUrl, paramData, callback) { $.ajax({ cache: false, type: "post", url: requsetUrl + "?timestamp=" + new Date().getTime(), data: paramData, success: function (back) { callback && callback(back); }, error: function () { callback && callback({retCode: 0, retMsg: "远程服务器正忙"}); } }); }
jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>就是鲜,只有新鲜</title> <link rel="stylesheet" href="../../../../assets/css/address/address.css" /> <style> #a{ margin-left:200px; margin-top:30px; width:500px; height:500px; border:1px solid #999999; padding:30px 0 0 200px; } .cc{ border:1px solid #ccc; width:288px; height:20px; padding:2px 5px; margin-bottom:20px; } .cc input { border:none; width:288px; height:20px; font-size:14px; line-height:20px; } .cc input:focus { outline:none; } </style> </head> <body> <div id="a"> <div id="aa" class="cc"><input /></div> </div> <script type="text/javascript" src="../../../../assets/js/jquery.min.js"></script> <script type="text/javascript" src="../../../../assets/js/admin.js"></script> <script type="text/javascript" src="../../../../assets/js/address/jquery.address.min.js"></script> <script> sendRequest("/user/address",null,function(res){ var c = eval('('+res+')'); $("#aa").address(c,function () {}); $("#aa").Address({ callback:function(infos,selected_ids) { var str = ''; for(var i=0;i<infos.length;i++) { str = str+infos[i]; } $('#aa input').val(str); } }); }); </script> </body> </html>