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 相关文章推荐
网上应用的一个不错common.js脚本
Aug 08 Javascript
Dom操作之兼容技巧分享
Sep 20 Javascript
javascript中日期转换成时间戳的小例子
Mar 21 Javascript
jquery动态改变div宽度和高度
Feb 09 Javascript
Javascript函数的参数
Jul 16 Javascript
jquery对dom节点的操作【推荐】
Apr 15 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
Apr 29 Javascript
基于Vue框架vux组件库实现上拉刷新功能
Nov 28 Javascript
Vue项目组件化工程开发实践方案
Jan 09 Javascript
ES10的13个新特性示例(小结)
Sep 23 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
May 31 Javascript
webpack5 联邦模块介绍详解
Jul 08 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中一个有意思的日期逻辑处理
2012/03/25 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
JS 创建对象的模式实例小结
2020/04/28 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
Python缩进和冒号详解
2016/06/01 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
python处理document文档保留原样式
2019/09/23 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
python中的django是做什么的
2020/07/31 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
思想汇报范文
2013/11/04 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
消防演习通知
2015/04/25 职场文书
高三英语教学反思
2016/03/03 职场文书
Hive导入csv文件示例
2022/06/25 数据库