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 09 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
Dec 09 Javascript
基于jQuery架构javascript基础体系
Jan 01 Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 Javascript
原生JavaScript实现Ajax的方法
Apr 07 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
Apr 26 Javascript
详解AngularJS中ng-src指令的使用
Sep 07 Javascript
vue.js动画中的js钩子函数的实现
Jul 06 Javascript
利用Promise自定义一个GET请求的函数示例代码
Mar 20 Javascript
Emberjs 通过 axios 下载文件的方法
Sep 03 Javascript
js计算最大公约数和最小公倍数代码实例
Sep 11 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
Jul 13 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之第八天
2006/10/09 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
基于javascript实现贪吃蛇小游戏
2019/11/25 Javascript
17个Python小技巧分享
2015/01/23 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
小学节能减排倡议书
2014/05/15 职场文书
学校端午节活动方案
2014/08/23 职场文书
支行行长竞聘报告
2014/11/06 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
龙门石窟导游词
2015/02/02 职场文书
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang