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 相关文章推荐
jquery validate使用攻略 第四步
Jul 01 Javascript
JS文本框不能输入空格验证方法
Mar 19 Javascript
jquery弹出框的用法示例(2)
Aug 26 Javascript
javascript四舍五入函数代码分享(保留后几位)
Dec 10 Javascript
node.js中的url.format方法使用说明
Dec 10 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
详谈javascript中的cookie
Jun 03 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
Aug 17 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
Dec 03 Javascript
jQuery实现图片文字淡入淡出效果
Dec 21 Javascript
JavaScript hasOwnProperty() 函数实例详解
Aug 04 Javascript
详解javascript脚本何时会被执行
Feb 05 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/06/13 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
php写入mysql中文乱码的实例解决方法
2019/09/17 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
基于Python闭包及其作用域详解
2017/08/28 Python
Python 对输入的数字进行排序的方法
2018/06/23 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
thinkphp5 路由分发原理
2021/03/18 PHP
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
2020/10/29 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
中间件分为哪几类
2012/03/14 面试题
实习教师个人的自我评价
2013/11/08 职场文书
医学院护理专业应届生求职信
2013/11/12 职场文书
九年级历史教学反思
2014/01/27 职场文书
医院领导班子整改方案
2014/10/01 职场文书
建国大业观后感600字
2015/06/01 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书