省,市,区三级下拉框联动以及localStorage当做缓存优化

今天做了一个企业用户申请的界面,需要填写地域,用到了联动的下拉框。

今晚看资料看到可以用localstorage先存储再用,当初真是没想到,这是一个优化点啊,明天试一试。现在用的手机码字,不方便,睡觉了。

----------------更新---------------------

实现结果如图

首先先访问接口获取所有省市区的数据,获得的数据密密麻麻如下

json格式,看的眼睛都花了,用工具分析一下,http://www.bejson.com/jsonviewernew/,这个在线的json视图就很好用。

分析如下

。。。。。。。。。。。。。。。。突然想说脏话。。

刚进入页面,先把省的表单循环出来,这个好弄,注意上面json视图中那个大大的0是什么鬼?

在省的表单上加一个触发事件,获取到所选省的值,循环所有省,在循环中加个if判断,如果循环的省id等于所选的值,循环下面的市,组织好html输出,如下

//
        appcan.select(".cate1", function(ele, value) {
           // $('#cate2Text').html('请选择市');
           setLocVal('pro',value);
            if(value==0){
                $('#company_city').html(''); 
            }else{
                var cate2 = "<option value=0>请选择市</option>";
                for (var i = 0; i < cates.length; i++) {
                    if(cates[i].id == value){
                        for (var j = 0; j < cates[i].city.length; j++) {
                            cate2 += '<option value="' + cates[i].city[j].id + '">' + cates[i].city[j].name + '</option>';
                        
                        }
                    }
                }
                $('#company_city').html(cate2);
            }
        });

注意现在已经确定省的值了,这时先把省的值存起来,虽然现在用不到,但一会循环区的时候要用。如下

//
          appcan.select(".cate2", function(ele, value) {
              pro = getLocVal('pro');
            if(value==0){
                $('#company_area').html(''); 
            }else{
                var cate2 = "<option value=0>请选择区</option>";

                for (var i = 0; i < cates[pro].city.length; i++) {
                    if(cates[pro].city[i].id == value){
                        for (var j = 0; j < cates[pro].city[i].county.length; j++) {
                            cate2 += '<option value="' + cates[pro].city[i].county[j].id + '">' + cates[pro].city[i].county[j].name + '</option>';
                        }
                    }
                }
                $('#company_area').html(cate2);
            }
        });

好乱。

原文地址:https://www.cnblogs.com/tingfengqieyu/p/5074705.html