约定

  • 省市区三级城市联动效果,选择框默认全部显示,选择后根据实际情况显示或隐藏。

  • 在省得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省市区城市级联相关推荐

  1. esayui-全国城市省市区三级级联

    基于easyUI的省市区三级级联,搜索资料后整理优化: 打包下载地址:http://download.csdn.net/download/qq_40841313/10266959 1.引入css.js ...

  2. python省市区三级联动_Ajax实现省市区三级级联详解

    本文主要为大家详细介绍了Ajax实现省市区三级级联,数据来自mysql数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 实现Ajax实现省市区三级级联,需要Java解析js ...

  3. Vue省市区三级联选择器V-Distpicker的使用

    Vue省市区三级联选择器V-Distpicker的使用 最近用的Vue+Element UI时,有些地方需要用到省市区三联选择器,网上安装并尝试了多种类似的插件,但都因为无法正常实现或是没有眼缘而弃用 ...

  4. GeneXus笔记本—城市级联下拉

    最近在交流GeneXus的时候 总是会遇到有城市级联下拉的问题 这里就简单做几种方式 供大家参考参考 第一种就是直接绑定关联信息然后在后者的条件模块设定条件即可 具体如下: 首先我们所需要的表为pro ...

  5. java城市级联一次查询_我的城市没有任何设计活动,所以我自己组织了一次。...

    java城市级联一次查询 by Marty Laurita 由Marty Laurita 我的城市没有任何设计活动,所以我自己组织了一次. (There weren't any design even ...

  6. web前端之城市级联

    城市级联 最近看了篇不错的博客,效果实现的也不错,但存在细小问题,所以就原作者博客代码基础上进行了细微修改. 说明 原博主代码实现了选择省份,自动对应出地市. 选择地市可自动对应出区县. 但存在的细小 ...

  7. 移动应用开发实践-Task5-通过Json获取城市列表

    移动应用开发实践-Task5-通过Json获取城市列表 目标 1.City类 2.JsonUtil工具类(核心代码) 3.MainActivity调用工具类 4.运行结果 目标 封装一个Json转Ci ...

  8. 中国省份城市级联选择--JavaScript

    原文地址为: 中国省份城市级联选择--JavaScript 前一段做了一个小程序居然都用到列表框选择城市,一直都是在里面直接编辑项,这样没做一次都要写那么多的城市名,真是让人有崩溃的冲动,网上也有很多 ...

  9. 中国省市区三级联的JSON格式

    网上的json中国省市区好像都不全,不然就是格式不对,自己费了好大功夫,终于弄好了,分享给大家,有钓鱼岛的哦 [ { "name": "北京", "c ...

最新文章

  1. python中一共有多少个关键字-python 查看所有的关键字
  2. 两个Fragment之间如何传递数据
  3. 一步步编写操作系统 33 利用bios中断0x15子功能0xe820获取内存
  4. php 一些个 常用 函数
  5. C#枚举类型用户标志位的代码
  6. Apache Kudu 加速对频繁更新数据的分析
  7. array_merge用法
  8. 【[USACO13NOV]没有找零No Change】
  9. 计算SRTM的高程异常的参考
  10. AI革命,通往超级人工智能之路
  11. 项目开发中的人月及如何计算
  12. 五寸照片尺寸像素 5寸的照片是几比几的
  13. Eclipse报错DataIntegrityViolationException异常解决办法
  14. Win10 VC++运行库集合|VC++ 2005 2008 2010 2012 2015
  15. excel打不开怎么办_第52期分享:Excel大佬有哪些骚操作呢?
  16. jupyter note 打开md文件
  17. 用扫地机器人楼下吵吗_家里是复式的,用福玛特扫地机器人能扫完楼下拿到楼上接着扫吗...
  18. 使用百度地图实现车辆轨迹回放
  19. TX2安装realsense SDK和librealsense
  20. java计算机毕业设计综合众筹网站源码+mysql数据库+系统+lw文档+部署

热门文章

  1. 风之语.人在职场也需要'备胎'
  2. BERT面向语言理解的深度双向变换预训练
  3. 难解?SAP云平台集成前路何方?
  4. 机器学习的9个基础概念和10种基本算法总结
  5. 干货丨2017年深度学习必读31篇论文(附下载地址)
  6. 《数学之美》第5章 隐含马尔可夫模型
  7. 重磅!Nature子刊发布稳定学习观点论文:建立因果推理和机器学习的共识基础...
  8. 反思脑机接口技术:机器真的能控制我们的大脑吗?
  9. IEEE CS:2021年的12大技术趋势
  10. 潘云鹤院士:AI2.0和工业经济发展智能化