json省市区城市级联
约定
省市区三级城市联动效果,选择框默认全部显示,选择后根据实际情况显示或隐藏。
在省得select上加上属性 load-data=“330102” 即表示页面需把330102这个对应的相关select做相应选中。
json数据结构:城市编码6位(每2位表示一级),城市层级,上一级编码,城市名称,其他根据业务实际需求而定
效果https://github.com/Pamki/blog...
DOM结构:
<form class="form-horizontal col-xs-6"><div class="form-group"><label for="" class="col-sm-3 text-right">地址</label><div class="col-sm-3"><select id="province" class="form-control" load-data="330701"><option value="">--选择省/市--</option></select></div><div class="col-sm-3"><select id="city" class="form-control"><option value="">--选择城市--</option></select></div><div class="col-sm-3"><select id="dist" class="form-control"><option value="">--选择区域--</option></select></div><input class="show" type="text" name="address" id="address" />(class改加hide即可隐藏)</div></form><input class="show" type="text" name="address" id="address" />(class改加hide即可隐藏)
js:
var prov_obj = $("#province");var city_obj = $("#city");var district_obj = $("#dist");var are_obj = $("#address");var city = document.getElementById('city');var district = document.getElementById('dist');var select_prehtml="";var getcity;var setCity = function() {//只要触发了此事件,2、3级菜单必须还原 city.options.length = 1; //重置选项district.options.length = 1; //重置选项var val = prov_obj.val();temp_html=select_prehtml;var getjson = $.each(getcity, function(i, prov) {if(prov.level == 2 && prov.parent_code == val) {temp_html += "<option name=\"" + prov.abbr + "\" value=\"" + prov.code + "\">" + prov.name + "</option>";}});$.when(getjson).done(function(data) {city_obj.append(temp_html);getdist("one");});}; //设置城市var setArea = function() {//只要触发了此事件,3级菜单必须还原 district.options.length = 1; //重置选项var val = city_obj.val();temp_html=select_prehtml;var getjson = $.each(getcity, function(i, prov) {if(prov.level == 3 && prov.parent_code == val) {temp_html += "<option name=\"" + prov.abbr + "\" value=\"" + prov.code + "\">" + prov.name + "</option>";}});$.when(getjson).done(function(data) {district_obj.append(temp_html);if(district.options.length < 2) {district_obj.hide();} else {district_obj.show();}getdist("two");});}; //设置区域var getdist = function(sign) {var s1 = prov_obj.val();var s2 = city_obj.val();var s3 = district_obj.val();if(sign == "one") {are_obj.val(s1);prov_obj.attr("load-data", s1);} else if(sign == "two") {are_obj.val(s2);prov_obj.attr("load-data", s2);} else {are_obj.val(s3);prov_obj.attr("load-data", s3);}}; //获取城市编码var load_city = function() {if($("select").attr("load-data") != "") {var ldata = $("select").attr("load-data");are_obj.val(ldata);temp_html,temp_html2=select_prehtml;for(var i = 0; i < getcity.length; i++) {if(getcity[i].code == ldata && getcity[i].parent_code.substr(2, 4) == "0000") {var s1 = ldata.substr(0, 2) + "0000"; //1级prov_obj.val(s1);//获取1级城市目录并赋值for(var j = 0; j < getcity.length; j++) {if(getcity[j].level == 2 && getcity[j].parent_code == getcity[i].parent_code) {temp_html += "<option name=\"" + getcity[j].abbr + "\" value=\"" + getcity[j].code + "\">" + getcity[j].name + "</option>"; //获取2级城市目录}}city_obj.append(temp_html);city_obj.val(ldata);//获取2级城市目录并赋值} else if(getcity[i].code == ldata && getcity[i].parent_code.substr(2, 4) !== "0000") {var s1 = ldata.substr(0, 2) + "0000"; //1级var s2 = ldata.substr(0, 4) + "00"; //2级$("#province option[value='" + s1 + "']").attr('selected', true);for(var j = 0; j < getcity.length; j++) {if(getcity[j].level == 3 && getcity[j].parent_code == s2) {temp_html += "<option name=\"" + getcity[j].abbr + "\" value=\"" + getcity[j].code + "\">" + getcity[j].name + "</option>"; //获取3级城市目录} else if(getcity[j].level == 2 && getcity[j].parent_code == s1) {temp_html2 += "<option name=\"" + getcity[j].abbr + "\" value=\"" + getcity[j].code + "\">" + getcity[j].name + "</option>"; //获取2级城市目录}}city_obj.append(temp_html2);city_obj.val(s2);//获取2级城市目录并赋值district_obj.append(temp_html);district_obj.val(ldata);//获取3级城市目录并赋值}}}}var init = function() {// 遍历赋值省份下拉列表temp_html=select_prehtml;$.each(getcity, function(i, prov) {if(prov.level == 1) {temp_html += "<option name=\"" + prov.abbr + "\" value=\"" + prov.code + "\">" + prov.name + "</option>";}});prov_obj.append(temp_html);prov_obj.bind("change", function() {setCity();});city_obj.bind("change", function() {setArea();});district_obj.bind("change", function() {getdist();});};//加载json数据$.getJSON('city.json', function(data) {getcity = data.area;init();load_city();});</script>
博客地址:http://blog.csdn.net/pamki/ar...
json省市区城市级联相关推荐
- esayui-全国城市省市区三级级联
基于easyUI的省市区三级级联,搜索资料后整理优化: 打包下载地址:http://download.csdn.net/download/qq_40841313/10266959 1.引入css.js ...
- python省市区三级联动_Ajax实现省市区三级级联详解
本文主要为大家详细介绍了Ajax实现省市区三级级联,数据来自mysql数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 实现Ajax实现省市区三级级联,需要Java解析js ...
- Vue省市区三级联选择器V-Distpicker的使用
Vue省市区三级联选择器V-Distpicker的使用 最近用的Vue+Element UI时,有些地方需要用到省市区三联选择器,网上安装并尝试了多种类似的插件,但都因为无法正常实现或是没有眼缘而弃用 ...
- GeneXus笔记本—城市级联下拉
最近在交流GeneXus的时候 总是会遇到有城市级联下拉的问题 这里就简单做几种方式 供大家参考参考 第一种就是直接绑定关联信息然后在后者的条件模块设定条件即可 具体如下: 首先我们所需要的表为pro ...
- java城市级联一次查询_我的城市没有任何设计活动,所以我自己组织了一次。...
java城市级联一次查询 by Marty Laurita 由Marty Laurita 我的城市没有任何设计活动,所以我自己组织了一次. (There weren't any design even ...
- web前端之城市级联
城市级联 最近看了篇不错的博客,效果实现的也不错,但存在细小问题,所以就原作者博客代码基础上进行了细微修改. 说明 原博主代码实现了选择省份,自动对应出地市. 选择地市可自动对应出区县. 但存在的细小 ...
- 移动应用开发实践-Task5-通过Json获取城市列表
移动应用开发实践-Task5-通过Json获取城市列表 目标 1.City类 2.JsonUtil工具类(核心代码) 3.MainActivity调用工具类 4.运行结果 目标 封装一个Json转Ci ...
- 中国省份城市级联选择--JavaScript
原文地址为: 中国省份城市级联选择--JavaScript 前一段做了一个小程序居然都用到列表框选择城市,一直都是在里面直接编辑项,这样没做一次都要写那么多的城市名,真是让人有崩溃的冲动,网上也有很多 ...
- 中国省市区三级联的JSON格式
网上的json中国省市区好像都不全,不然就是格式不对,自己费了好大功夫,终于弄好了,分享给大家,有钓鱼岛的哦 [ { "name": "北京", "c ...
最新文章
- python中一共有多少个关键字-python 查看所有的关键字
- 两个Fragment之间如何传递数据
- 一步步编写操作系统 33 利用bios中断0x15子功能0xe820获取内存
- php 一些个 常用 函数
- C#枚举类型用户标志位的代码
- Apache Kudu 加速对频繁更新数据的分析
- array_merge用法
- 【[USACO13NOV]没有找零No Change】
- 计算SRTM的高程异常的参考
- AI革命,通往超级人工智能之路
- 项目开发中的人月及如何计算
- 五寸照片尺寸像素 5寸的照片是几比几的
- Eclipse报错DataIntegrityViolationException异常解决办法
- Win10 VC++运行库集合|VC++ 2005 2008 2010 2012 2015
- excel打不开怎么办_第52期分享:Excel大佬有哪些骚操作呢?
- jupyter note 打开md文件
- 用扫地机器人楼下吵吗_家里是复式的,用福玛特扫地机器人能扫完楼下拿到楼上接着扫吗...
- 使用百度地图实现车辆轨迹回放
- TX2安装realsense SDK和librealsense
- java计算机毕业设计综合众筹网站源码+mysql数据库+系统+lw文档+部署