原生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获取当前页面上的指定对象示例代码
Feb 28 Javascript
jquery实现显示已选用户
Jul 21 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
Apr 21 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
Aug 11 Javascript
jQuery实现图片轮播特效代码分享
Sep 15 Javascript
关于JS中的apply,call,bind的深入解析
Apr 05 Javascript
使用jquery提交form表单并自定义action的方法
May 25 Javascript
深入理解react-router@4.0 使用和源码解析
May 23 Javascript
mint-ui 时间插件使用及获取选择值的方法
Feb 09 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
Sep 11 Javascript
vue 实现Web端的定位功能 获取经纬度
Aug 08 Javascript
vue自定义组件实现双向绑定
Jan 13 Vue.js
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中的串行化变量和序列化对象
2006/09/05 PHP
也谈 PHP 和 MYSQL
2006/10/09 PHP
获取远程文件大小的php函数
2010/01/11 PHP
PHP取得一个类的属性和方法的实现代码
2011/05/22 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
python查找指定具有相同内容文件的方法
2015/06/28 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
Python解析json代码实例解析
2019/11/25 Python
Python 使用office365邮箱的示例
2020/10/29 Python
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
印度在线杂货店:bigbasket
2018/08/23 全球购物
思想品德自我鉴定
2013/10/12 职场文书
计算机专业毕业生的自我评价
2013/11/18 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
MySQL详细讲解变量variables的用法
2022/06/21 MySQL
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS