原生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 相关文章推荐
IE与firefox下Dhtml的一些区别小结
Dec 02 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
Nov 15 Javascript
基于jquery的代码显示区域自动拉长效果
Dec 07 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
Feb 07 Javascript
查看图片(前进后退)功能实现js代码
Apr 24 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
Jan 06 Javascript
使用javascript做的一个随机点名程序
Feb 13 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
Jun 06 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
Aug 30 Javascript
Vue之Watcher源码解析(2)
Jul 19 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
Jan 09 Javascript
vue 解决IOS10低版本白屏的问题
Nov 17 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从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
python的re模块应用实例
2014/09/26 Python
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
python中reduce()函数的使用方法示例
2017/09/29 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
对python中的高效迭代器函数详解
2018/10/18 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Python日期时间Time模块实例详解
2019/04/15 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
浅析Python迭代器的高级用法
2020/07/16 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
母亲80寿诞答谢词
2014/01/16 职场文书
优秀幼教自荐信
2014/02/03 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
初一学生评语大全
2014/04/24 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
奖学金个人总结
2015/03/04 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
Python Pygame实战之塔防游戏的实现
2022/03/17 Python