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 学习之旅 (1)
Feb 05 Javascript
javascript 变量作用域 代码分析
Jun 26 Javascript
JQ获取动态加载的图片大小的正确方法分享
Nov 08 Javascript
js生成验证码并直接在前端判断
May 15 Javascript
jQuery简单实现title提示效果示例
Aug 01 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
Apr 10 jQuery
webpack学习教程之publicPath路径问题详解
Jun 17 Javascript
JavaScript基础之流程控制语句的用法
Aug 31 Javascript
JavaScript如何获取到导航条中HTTP信息
Oct 10 Javascript
浅谈Redux中间件的实践
Jul 27 Javascript
vue+express+jwt持久化登录的方法
Jun 14 Javascript
在elementui中Notification组件添加点击事件实例
Nov 11 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
Python中zfill()方法的使用教程
2015/05/20 Python
Python程序中的观察者模式结构编写示例
2016/05/27 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
python系列 文件操作的代码
2019/10/06 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
python实现银行实战系统
2020/02/26 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
python文件路径操作方法总结
2020/12/21 Python
教育技术学专业职业规划书
2014/03/03 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
在人间读书笔记
2015/06/30 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书