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 相关文章推荐
编写Js代码要注意的几条规则
Sep 10 Javascript
jquery实现图片水平滚动效果代码分享
Aug 26 Javascript
JS+CSS实现的蓝色table选项卡效果
Oct 08 Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 Javascript
浅析Bootstrip的select控件绑定数据的问题
May 10 Javascript
基于bootstrap实现多个下拉框同时搜索功能
Jul 19 Javascript
vue axios请求超时的正确处理方法
Apr 02 Javascript
Vue项目中使用Vux的安装过程
May 01 Javascript
Vue SSR 组件加载问题
May 02 Javascript
webpack4的迁移的使用方法
May 25 Javascript
JavaScript命名空间模式实例详解
Jun 20 Javascript
微信小程序实现简单文字跑马灯
May 26 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
深入PHP magic quotes的详解
2013/06/17 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
PHP内存使用情况如何获取
2015/10/10 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
一个js实现的所谓的滑动门
2007/05/23 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
JS画线(实例代码)
2013/11/20 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
小学校园之星事迹材料
2014/05/16 职场文书
记账会计岗位职责
2014/06/16 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python