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.fn.extend与jquery.extend
Nov 21 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
Jan 27 Javascript
JavaScript验证图片类型(扩展名)的函数分享
May 05 Javascript
Javascript基础知识盲点总结之函数
May 15 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
May 25 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
Jul 12 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
Oct 10 Javascript
jquery删除数组中重复元素
Dec 05 Javascript
微信小程序 template模板详解及实例代码
Mar 09 Javascript
基于Node.js模板引擎教程-jade速学与实战1
Sep 17 Javascript
使用JS获取SessionStorage的值
Jan 12 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 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
ftp类(myftp.php)
2006/10/09 PHP
php 设计模式之 工厂模式
2008/12/19 PHP
PHP下常用正则表达式整理
2010/10/26 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
微信小程序登录时如何获取input框中的内容
2019/12/04 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
PyQt5实现简单数据标注工具
2019/03/18 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
师范毕业生求职自荐信
2013/09/25 职场文书
本科生求职简历的自我评价
2013/10/21 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
Django drf请求模块源码解析
2021/06/08 Python