原生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 相关文章推荐
javascript下阻止表单重复提交、防刷新、防后退
Aug 17 Javascript
网页防止tab键的使用快速解决方法
Nov 07 Javascript
javascript关于继承的用法汇总
Dec 20 Javascript
浅谈javascript中字符串String与数组Array
Dec 31 Javascript
简述JavaScript中正则表达式的使用方法
Jun 15 Javascript
详解JavaScript基本类型和引用类型
Dec 09 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
Feb 17 Javascript
AngularJS实现Input格式化的方法
Nov 07 Javascript
vue中配置mint-ui报css错误问题的解决方法
Oct 11 Javascript
prototype.js简单实现ajax功能示例
Oct 18 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
Jun 03 Javascript
jQuery实现简易聊天框
Feb 08 jQuery
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获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
numpy 声明空数组详解
2019/12/05 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
Why do we need Unit test
2013/01/03 面试题
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
企业优秀团员事迹材料
2014/08/20 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
2015年技术员工作总结
2015/04/10 职场文书
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle