原生JavaScript实现动态省市县三级联动下拉框菜单实例代码


Posted in Javascript onFebruary 03, 2016

像平时购物选择地址时一样,通过选择的省动态加载城市列表,通过选择的城市动态加载县区列表,从而可以实现省市县的三级联动,下面使用原生的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>

当然,省市县三者都是动态联动的,只要顶级的内容发生改变,所有子级的内容也会发生改变或被重置为City或Country.

以上所述是小编给大家分享的原生JavaScript实现动态省市县三级联动下拉框菜单实例代码,希望对大家有所帮助。

Javascript 相关文章推荐
js 页面执行时间计算代码
Mar 04 Javascript
几个javascript操作word的参考代码
Oct 26 Javascript
JS 文件大小判断的实现代码
Apr 07 Javascript
javascript函数中的arguments参数
Aug 01 Javascript
解读JavaScript中 For, While与递归的用法
May 07 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
Jul 24 Javascript
基于vuejs+webpack的日期选择插件
May 21 Javascript
js表单序列化判断空值的实例
Sep 22 Javascript
Vue表单类的父子组件数据传递示例
May 03 Javascript
详解ES6中的Map与Set集合
Mar 22 Javascript
JavaScript实现的开关灯泡点击切换特效示例
Jul 08 Javascript
JavaScript键盘事件响应顺序详解
Sep 30 Javascript
AngularJS向后端ASP.NET API控制器上传文件
Feb 03 #Javascript
javascript DIV实现跟随鼠标移动
Mar 19 #Javascript
javascript鼠标右键菜单自定义效果
Dec 08 #Javascript
JavaScript获取当前运行脚本文件所在目录的方法
Feb 03 #Javascript
JavaScript获取对象在页面中位置坐标的方法
Feb 03 #Javascript
基于jQuery实现select下拉选择可输入附源码下载
Feb 03 #Javascript
javascript点击按钮实现隐藏显示切换效果
Feb 03 #Javascript
You might like
按上下级层次关系输出内容的PHP代码
2010/07/17 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
js版本A*寻路算法
2006/12/22 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
javascript中length属性的探索
2011/07/31 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
新奇的小玩意:IWOOT
2016/07/21 全球购物
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
申请任职学生会干部自荐书范文
2014/02/13 职场文书
2014教师研修学习体会
2014/07/08 职场文书
工伤事故证明
2014/10/20 职场文书
庆七一主持词
2015/06/29 职场文书