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判断生效时间不得大于失效时间的思路及代码
Apr 23 Javascript
为jQuery添加Webkit的触摸的方法分享
Feb 02 Javascript
常规表格多表头查询示例
Feb 21 Javascript
jQuery实现数秒后自动提交form的方法
Mar 05 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
Mar 02 Javascript
Angular2使用jQuery的方法教程
May 28 jQuery
JS简单实现数组去重的方法分析
Oct 14 Javascript
vue实现个人信息查看和密码修改功能
May 06 Javascript
vue实现简单的星级评分组件源码
Nov 16 Javascript
详解vantUI框架在vue项目中的应用踩坑
Dec 06 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
Sep 26 Javascript
JavaScript canvas实现跟随鼠标事件
Feb 10 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
PHP链表操作简单示例
2016/10/15 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
ext jquery 简单比较
2010/04/07 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
Windows下python2.7.8安装图文教程
2016/05/26 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
简单了解python协程的相关知识
2019/08/31 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
置业顾问岗位职责
2014/03/02 职场文书
环保标语口号
2014/06/13 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
MySQL优化及索引解析
2022/03/17 MySQL
mysql函数之截取字符串的实现
2022/08/14 MySQL