amazeUI 地区选择器三级联动问题解决,带地区数据

简介: <div id="area_box"> <select data-am-selected="{maxHeight:200,btnWidth:'120px'}" placeholder="请选择省" id="province"> .

2018年5月25号

直接上代码

        <div id="area_box">
            <select data-am-selected="{maxHeight:200,btnWidth:'120px'}" placeholder="请选择省" id="province">
                <option value=""></option>
            </select>
            <select data-am-selected="{maxHeight:200,btnWidth:'120px'}" placeholder="请选择市" id="city">
                <option value=""></option>
            </select>
            <select data-am-selected="{maxHeight:200,btnWidth:'120px'}" placeholder="请选择区/县" id="area">
                <option value=""></option>
            </select>
        </div>
        <button class="weui-vcode-btn" id="send">下一步</button>
        +$(function() {
            var $province_value, $city_value, $area_value, $areas_code;
            $areas_code = 0;
            $('#area_box div:nth-child(4)').attr('class', 'am-selected am-dropdown hide');
            $('#area_box div:nth-child(6)').attr('class', 'am-selected am-dropdown hide');
            var $province = $('#province');
            var $province_length = areas.length;
            for(var i = 0; i < $province_length; i++) {
                var $option = $('<option value="' + i + '">' + areas[i].name + '</option>');
                $option.appendTo($province);
            }
            $('body').on('click', '#area_box>div:nth-child(2) li', function() {
                $province_value = $(this).attr('data-value');
                var $province_selected = $(this).children().html();
                var $city_length = areas[$province_value].sub.length;
                $('#area_box>div:nth-child(2) .am-selected-status').html($province_selected);
                $('#city').html('<option value=""></option>');
                $('#area').html('<option value=""></option>');
                for(var j = 0; j < $city_length; j++) {
                    var $option = $('<option value="' + j + '">' + areas[$province_value].sub[j].name + '</option>');
                    $option.appendTo($('#city'));
                }
                $('#area_box>div:nth-child(4)').attr('class', 'am-selected am-dropdown');
                $('#area_box>div:nth-child(6)').attr('class', 'am-selected am-dropdown hide');
                $areas_code = 1;
            });
            $('body').on('click', '#area_box>div:nth-child(4) li', function() {
                $city_value = $(this).attr('data-value');
                var $city_selected = $(this).children().html();
                var $area_length = areas[$province_value].sub[$city_value].sub.length;
                $('#area_box>div:nth-child(4) .am-selected-status').html($city_selected);
                $('#area').html('<option value=""></option>');
                for(var k = 0; k < $area_length; k++) {
                    var $option = $('<option value="' + k + '">' + areas[$province_value].sub[$city_value].sub[k].name + '</option>');
                    $option.appendTo($('#area'));
                }
                $('#area_box>div:nth-child(6)').attr('class', 'am-selected am-dropdown');
                $areas_code = 2;
            });
            $('body').on('click', '#area_box>div:nth-child(6) li', function() {
                $area_value = $(this).attr('data-value');
                var $area_selected = $(this).children().html();
                $('#area_box>div:nth-child(6) .am-selected-status').html($area_selected);
                $areas_code = [$province_value, $city_value, $area_value];
            });
            $('#send').click(function() {
                if($areas_code == 0) {
                    console.log('请选择省');
                } else if($areas_code == 1) {
                    console.log('请选择市');
                } else if($areas_code == 2) {
                    console.log('请选择区/县');
                }
            });
        });

地区数据满足以下格式
查看所有数据

var areas = [{
    "name": "北京",
    "code": "110000",
    "sub": [{
        "name": "北京市",
        "code": "110000",
        "sub": [{
            "name": "东城区",
            "code": "110101"
        }, {
            "name": "西城区",
            "code": "110102"
        }, {
            "name": "朝阳区",
            "code": "110105"
        }, {
            "name": "丰台区",
            "code": "110106"
        }, {
            "name": "石景山区",
            "code": "110107"
        }, {
            "name": "海淀区",
            "code": "110108"
        }, {
            "name": "门头沟区",
            "code": "110109"
        }, {
            "name": "房山区",
            "code": "110111"
        }, {
            "name": "通州区",
            "code": "110112"
        }, {
            "name": "顺义区",
            "code": "110113"
        }, {
            "name": "昌平区",
            "code": "110114"
        }, {
            "name": "大兴区",
            "code": "110115"
        }, {
            "name": "怀柔区",
            "code": "110116"
        }, {
            "name": "平谷区",
            "code": "110117"
        }, {
            "name": "密云县",
            "code": "110228"
        }, {
            "name": "延庆县",
            "code": "110229"
        }]
    }]
}, {
    "name": "天津",
    "code": "120000",
    "sub": [{
        "name": "天津市",
        "code": "120000",
        "sub": [{
            "name": "和平区",
            "code": "120101"
        }, {
            "name": "河东区",
            "code": "120102"
        }, {
            "name": "河西区",
            "code": "120103"
        }, {
            "name": "南开区",
            "code": "120104"
        }, {
            "name": "河北区",
            "code": "120105"
        }, {
            "name": "红桥区",
            "code": "120106"
        }, {
            "name": "东丽区",
            "code": "120110"
        }, {
            "name": "西青区",
            "code": "120111"
        }, {
            "name": "津南区",
            "code": "120112"
        }, {
            "name": "北辰区",
            "code": "120113"
        }, {
            "name": "武清区",
            "code": "120114"
        }, {
            "name": "宝坻区",
            "code": "120115"
        }, {
            "name": "滨海新区",
            "code": "120116"
        }, {
            "name": "宁河县",
            "code": "120221"
        }, {
            "name": "静海县",
            "code": "120223"
        }, {
            "name": "蓟县",
            "code": "120225"
        }]
    }]
}];
目录
相关文章
|
索引
三级联动---城市地区选择
三级联动---城市地区选择有关数据源指给出了部分,仅作参考,其中提供了北京和天津两组数据作为测试用。   示例展示:   选择城市选择区县选择地区             示例代码: 三级联动 ...
979 0
|
JavaScript
js三级地区选择插件,省市县级联下拉列表
js三级地区选择插件,省市县级联下拉列表 3级省地市级联菜单,ie/ff 测试通过,支持多个并存,支持事件 demo1为最简单的一份实现,页面id配置需在js文件中写入,适合简单情况 demo2增加了动态配置,可将配置项传入,适合页面存在多个级联下拉 源代码及示例下载:http://download.
837 0
|
6月前
|
SQL 存储 前端开发
省市县三级联动的实现方案
省市县三级联动的实现方案
202 0
|
6月前
|
SQL 缓存 JSON
vue利用级联选择器实现全国省市区乡村五级菜单联动
vue利用级联选择器实现全国省市区乡村五级菜单联动
|
JSON 前端开发 JavaScript
AJAX完成三级级下拉联动【省份-城市-区域】
AJAX应用案例--基于mysql,以POST方式,用DOM对象,完成三级级下拉联动【省份-城市-区域】,效果图如下: 数据库如下: 省份                        ...
1083 0
|
2月前
|
存储 JSON JavaScript
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇在JavaScript中编写一个用于快递自动分拣的代码,区分省份、市区、县、城乡镇,通常意味着你需要一个数据结构来存储这些地理区域的信息,并编写逻辑来根据快递地址中的信息将其分配到正确的分类中。 这里,我将提供一个简化的示例,说明如何使用JavaScript对象和函数来实现这一功能。请注意,这个示例是高度简化的,并且假设你已经有了某种方式(如正则表达式或API调用)来从快递地址中提取省份、市区、县等信息。 ----------------------------------- ©著作权归作者所有:来自51CTO博客作者goS
|
JavaScript 前端开发 API
省市县三级联动
上次找到地区编码后,就测试省市县。网上找到例子感觉不是很合适,然后修改了下。 本来是从自己数据库查询,但做测试的话,在网上找到了一个地区编码的api,然后就是跨域问题。原来用ajax访问失败,getJSON可以,但getJson有同步问题,设置了全局参数也不管用,只好重复使用了。
1321 0