javascript省市区三级联动下拉框菜单实例演示


Posted in Javascript onNovember 29, 2015

本文实例讲述了javascript实现省市区三级联动下拉框菜单代码,像平时购物选择地址时一样,通过选择的省动态加载城市列表,通过选择的城市动态加载县区列表,从而可以实现省市县的三级联动,下面使用原生的JavaScript来实现这个功能,分享给大家供大家参考。具体如下:
运行效果截图如下:

javascript省市区三级联动下拉框菜单实例演示

具体代码如下:

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>三级联动测试</title>
 <script src="jquery-2.1.4.min.js"></script>
 <script type="text/javascript">
  //用来获得option元素中selected属性为true的元素的id
  function Get_Selected_Id(place){
   var pro = document.getElementById(place);
   var Selected_Id = pro.options[pro.selectedIndex].id;
   return Selected_Id;   //返回selected属性为true的元素的id
  }
  //改变下一个级联的option元素的内容,即加载市或县
  function Get_Next_Place(This_Place_ID,Action){
   var Selected_Id = Get_Selected_Id(This_Place_ID); //Selected_Id用来记录当前被选中的省或市的ID
   if(Action=='Get_city')       //从而可以在下一个级联中加载相应的市或县
    Add_city(Selected_Id);
   else if(Action=='Get_country')
    Add_country(Selected_Id);
  }
  //用来存储省市区的数据结构
  var Place_dict = {
   "GuangDong":{
       "GuangZhou":["PanYu","HuangPu","TianHe"],
       "QingYuan":["QingCheng","YingDe","LianShan"],
       "FoShan":["NanHai","ShunDe","SanShui"]
       },
   "ShanDong":{
       "JiNan":["LiXia","ShiZhong","TianQiao"],
       "QingDao":["ShiNan","HuangDao","JiaoZhou"]
       },
   "HuNan":{
       "ChangSha":["KaiFu","YuHua","WangCheng"],
       "ChenZhou":["BeiHu","SuXian","YongXian"]
      }
  };
  //加载城市选项
  function Add_city(Province_Selected_Id){
   $("#city").empty();
   $("#city").append("<option>City</option>");
   $("#country").empty();
   $("#country").append("<option>Country</option>");
   //上面的两次清空与两次添加是为了保持级联的一致性
   var province_dict = Place_dict[Province_Selected_Id]; //获得一个省的字典
   for(city in province_dict){  //取得省的字典中的城市
    //添加内容的同时在option标签中添加对应的城市ID
    var text = "<option"+" id='"+city+"'>"+city+"</option>";
    $("#city").append(text);
    console.log(text); //用来观察生成的text数据
   }
  }
  //加载县区选项
  function Add_country(City_Selected_Id){
   $("#country").empty();
   $("#country").append("<option>Country</option>");
   //上面的清空与添加是为了保持级联的一致性
   var Province_Selected_ID = Get_Selected_Id("province");  //获得被选中省的ID,从而方便在字典中加载数据
   var country_list = Place_dict[Province_Selected_ID][City_Selected_Id]; //获得城市列表
   for(index in country_list){
    ////添加内容的同时在option标签中添加对应的县区ID
    var text = "<option"+" id=\'"+country_list[index]+"\'>"+country_list[index]+"</option>";
    $("#country").append(text);
    console.log(text); //用来观察生成的text数据
   }
  }
 
 </script>
</head>
<body>
 <p>您的收货地址:</p>
 <select id="province" onchange="Get_Next_Place('province','Get_city')">
  <option id="Not_data1">Province</option>
  <option id="GuangDong" value="GuangDong">GuangDong</option>
  <option id="ShanDong" value="ShanDong">ShanDong</option>
  <option id="HuNan" value="HuNan">HuNan</option>
 </select>
 <select id="city" onchange="Get_Next_Place('city','Get_country')">
  <option id="Not_data2">City</option>
 </select>
 <select id="country">
  <option id="Not_data3">Country</option>
 </select>
 <br/>
</body>
</html>

如果大家还想深入学习,可以点击jquery下拉框效果汇总、JavaScript下拉框效果汇总进行学习。

这个实例就是类似在淘宝购物时填写收货地址,实现省市县的三级联动,希望大家可以应用到自己的作品中,学以致用。

Javascript 相关文章推荐
JavaScript中的Document文档对象
Jan 16 Javascript
JavaScript访问样式表代码
Oct 15 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
Sep 29 Javascript
jQuery实现用方向键控制层的上下左右移动
Jan 13 Javascript
批量实现面向对象的实例代码
Jul 01 Javascript
javascript获取xml节点的最大值(实现代码)
Dec 11 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
JQuery实现动态添加删除评论的方法
May 18 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
Mar 23 Javascript
vue-cli设置css不生效的解决方法
Feb 07 Javascript
vue如何在项目中调用腾讯云的滑动验证码
Jul 15 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
Nov 29 #Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
Nov 29 #Javascript
整理Javascript流程控制语句学习笔记
Nov 29 #Javascript
基于javascript代码实现通过点击图片显示原图片
Nov 29 #Javascript
整理Javascript数组学习笔记
Nov 29 #Javascript
Bootstrap每天必学之缩略图与警示窗
Nov 29 #Javascript
分享我的jquery实现下拉菜单心的
Nov 29 #Javascript
You might like
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
php中explode与split的区别介绍
2012/10/03 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
Node.js API详解之 tty功能与用法实例分析
2020/04/27 Javascript
Vue常用API、高级API的相关总结
2021/02/02 Vue.js
Python 中的range(),以及列表切片方法
2018/07/02 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
增大python字体的方法步骤
2020/07/05 Python
面包店的创业计划书范文
2014/01/16 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
立志成才演讲稿
2014/09/04 职场文书
村委会贫困证明范文
2014/09/21 职场文书
走群众路线剖析材料
2014/10/09 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
让子弹飞观后感
2015/06/11 职场文书
高温慰问简报
2015/07/21 职场文书
期中考试后的感想
2015/08/07 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
APP界面设计技巧和注意事项
2022/04/29 杂记