四级联动地址选择,从数据动态获取数据

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>

转载于:https://my.oschina.net/LiLonggang/blog/806665

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值