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中使用replaceAll()函数实现字符替换的方法
Dec 25 Javascript
ExtJs中gridpanel分组后组名排序实例代码
Dec 02 Javascript
JS方法调用括号的问题探讨
Jan 24 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 Javascript
实例详解jQuery表单验证插件validate
Jan 18 Javascript
JS中使用DOM来控制HTML元素
Jul 31 Javascript
JavaScript中import用法总结
Jan 20 Javascript
vue-cli3配置与跨域处理方法
Aug 17 Javascript
JS控制GIF图片的停止与显示
Oct 24 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
Jul 19 Javascript
在react-antd中弹出层form内容传递给父组件的操作
Oct 24 Javascript
javascript实现数字时钟效果
Feb 06 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实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
python实现批量监控网站
2016/09/09 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
python模糊图片过滤的方法
2018/12/14 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
应届毕业生个人自荐信范文
2013/11/30 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
大雁塔导游词
2015/02/04 职场文书
八年级数学教学反思
2016/02/17 职场文书
python 下划线的多种应用场景总结
2021/05/12 Python
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers