js省市区下拉框联动——前端笔记

news2024/9/26 3:29:11

问题:

我们常常要用到下拉框联动的功能,比如最常用的是选择地址的 省 市 区 的联动。

思路:

先填充第一个下拉框,然后写一个第一个下拉框的change事件来加载第二个下拉框,再写第二个下拉框的change事件来加载第三个下拉框。

示例:

这里我用到了一个数组文件areaData_min.js,这个文件 已经有了所有省市区的数据,直接从这个文件中取值就行。文件大概内容如下:
在这里插入图片描述

1、引入带省市区数据的js,下载地址areaData_min.js
在这里插入图片描述

2、准备三个下拉框

		<div>
			<select id="sheng"><!---->
	        </select>
	        <select id="shi"><!---->
	        </select>
	        <span id="hidequ"><!--用于隐藏-->
	        	<select id="qu"></select><!---->
	        </span>
		</div>

3、准备构建下拉框的方法

			function fillSelct(){//填充班级的下拉框
				for(var i=0;i<banJi.length;i++){
					var option = '<option value="'+ banJi[i].id + '">' + banJi[i].text
					+ '</option>';
					$('#bj').append(option);
				}
			}
			function fillSelct(){//填充省
				sheng.forEach(function(value, index) {
				  	var option = '<option value="'+ index + '">' + value+ '</option>';
					$('#sheng').append(option);
				})

			}
			function selectShi(sheng_id){//填充市
				$('#shi').empty();
				if(sheng_id==0){
					var option = '<option value="0">请选择</option>';
					$('#shi').append(option);
				}else{
					var shi = sub_array[sheng_id];
					shi.forEach(function(value, index) {
					  	var option = '<option value="'+ index + '">' + value+ '</option>';
						$('#shi').append(option);
					})
					if (sheng_id == 11 || sheng_id == 12 || sheng_id == 31 || sheng_id == 71 || sheng_id == 50 || sheng_id == 81 || sheng_id == 82) {
				        if ($("#hidequ")) {
				            $("#hidequ").hide();
				        }
				    }else{
				    	$("#hidequ").show();
				    }
				}

			}
			function selectQu(shi_id){//填充区
				$('#qu').empty();
				if(shi_id==0){
					var option = '<option value="0">请选择</option>';
					$('#qu').append(option);
				}else{
					var qu = sub_arr[shi_id];
					qu.forEach(function(value, index) {
					  	var option = '<option value="'+ index + '">' + value+ '</option>';
						$('#qu').append(option);
					})
				}

			}

4、页面初始化方法,形成联动

var sheng =area_array;//取出省的数组数据

			$(function(){//页面初始化
				fillSelct();//填充省
				selectShi(0);//填充市
				selectQu(0);//填充区
				$('#sheng').change(function(){//选择省的事件
					var sheng_id = $(this).val();
					selectShi(sheng_id);
				})
				$('#shi').change(function(){//选择市的事件
					var shi_id = $(this).val();
					selectQu(shi_id);
				})
			});

5、效果展示
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

完整代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>省市区下拉框联动</title>
		<script src="js/jquery.min.js"></script>
		<!--引入地区数据-->
		<script src="js/areaData_min.js"></script>
		<script>
			var sheng =area_array;//取出省的数组数据

			$(function(){//页面初始化
				fillSelct();//填充省
				selectShi(0);//填充市
				selectQu(0);//填充区
				$('#sheng').change(function(){//选择省的事件
					var sheng_id = $(this).val();
					selectShi(sheng_id);
				})
				$('#shi').change(function(){//选择市的事件
					var shi_id = $(this).val();
					selectQu(shi_id);
				})
			});
			function fillSelct(){//填充省
				sheng.forEach(function(value, index) {
				  	var option = '<option value="'+ index + '">' + value+ '</option>';
					$('#sheng').append(option);
				})

			}
			function selectShi(sheng_id){//填充市
				$('#shi').empty();
				if(sheng_id==0){
					var option = '<option value="0">请选择</option>';
					$('#shi').append(option);
				}else{
					var shi = sub_array[sheng_id];
					shi.forEach(function(value, index) {
					  	var option = '<option value="'+ index + '">' + value+ '</option>';
						$('#shi').append(option);
					})
					if (sheng_id == 11 || sheng_id == 12 || sheng_id == 31 || sheng_id == 71 || sheng_id == 50 || sheng_id == 81 || sheng_id == 82) {
				        if ($("#hidequ")) {
				            $("#hidequ").hide();
				        }
				    }else{
				    	$("#hidequ").show();
				    }
				}

			}
			function selectQu(shi_id){//填充区
				$('#qu').empty();
				if(shi_id==0){
					var option = '<option value="0">请选择</option>';
					$('#qu').append(option);
				}else{
					var qu = sub_arr[shi_id];
					qu.forEach(function(value, index) {
					  	var option = '<option value="'+ index + '">' + value+ '</option>';
						$('#qu').append(option);
					})
				}

			}

		</script>
	</head>
	<body>
		<div>
			<select id="sheng"><!---->
	        </select>
	        <select id="shi"><!---->
	        </select>
	        <span id="hidequ"><!--用于隐藏-->
	        	<select id="qu"></select><!---->
	        </span>
		</div>

	</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/838586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试总结-c++

1该吹牛逼吹牛逼。在自己能说出个所以然的情况下&#xff0c;该吹就吹&#xff0c;不吹没工作&#xff0c;吹了有希望。 比如 c组长&#xff0c;确有其事&#xff0c;但是挺唬人。说自己在北京定居也是侧面吹牛逼&#xff0c;证明自己的能力。还有媳妇在研究所。 2.对自己做过…

uniapp:图片验证码检验问题处理

图形验证码功能实现 uniapp&#xff1a;解决图形验证码问题及利用arraybuffer二进制转base64格式图片&#xff08;后端传的图片数据形式&#xff1a;x00\x10JFIF\x00\x01\x02\x00…&#xff09;_❆VE❆的博客-CSDN博客 UI稿&#xff1a; 需求&#xff1a;向后端请求验证码图片&…

Flask 是什么?Flask框架详解及实践指南

Flask 是一个轻量级的 Python Web 框架&#xff0c;它被广泛用于构建 Web 应用程序和 API。Flask 简单易用&#xff0c;具有灵活性和可扩展性&#xff0c;是许多开发者喜欢用其构建项目的原因。本文将介绍 Flask 是什么以及如何使用它来构建 Web 应用程序&#xff0c;同时提供一…

《Java-SE-第二十八章》之CAS

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…

Cocos Creator的 Cannot read property ‘applyForce‘ of undefined报错

序&#xff1a; 1、博主是看了这个教程操作的时候出的bug>游戏开发 | 17节课学会如何用Cocos Creator制作3D跑酷游戏 | P9 代码控制对象移动_哔哩哔哩_bilibili 2、其实问题不是出在代码上&#xff0c;但是发现物体就是不平移 3、node全栈的资料》node全栈框架 正文…

【文件操作:解锁高效读写与管理技巧】

本章重点 为什么使用文件 什么是文件 文件的打开和关闭 文件的顺序读写 文件的随机读写 文本文件和二进制文件 文件读取结束的判定 文件缓冲区 1. 为什么使用文件 C语言中的变量和数据通常只在程序运行时存在于内存中&#xff0c;一旦程序结束&#xff0c;这些数据就…

LeetCode933. 最近的请求次数

题干 写一个 RecentCounter 类来计算特定时间范围内最近的请求。 请你实现 RecentCounter 类&#xff1a; RecentCounter() 初始化计数器&#xff0c;请求数为 0 。int ping(int t) 在时间 t 添加一个新请求&#xff0c;其中 t 表示以毫秒为单位的某个时间&#xff0c;并返回…

三、PWM呼吸灯

1. 什么是呼吸灯 如下图中的蓝色LED灯,不再是亮灭交替,而是慢慢亮慢慢灭,这就是呼吸灯 生活中常见 2. 怎样实现? 答:用PWM

Android中级——RemoteView

RemoteView RemoteView的应用NotificationWidgetPendingIntent RemoteViews内部机制模拟RemoteViews RemoteView的应用 Notification 如下开启一个系统的通知栏&#xff0c;点击后跳转到某网页 public class MainActivity extends AppCompatActivity {private static final …

项目一:基于stm32的阿里云智慧消防监控系统

若该文为原创文章&#xff0c;转载请注明原文出处。 Hi&#xff0c;大家好&#xff0c;我是忆枫&#xff0c;今天向大家介绍一个单片机项目。 一、简介 智慧消防监控系统&#xff0c;是用于检测火灾&#xff0c;温度&#xff0c;烟雾的监控系统。以 stm32单片机为核心外加 MQ…

一次redis缓存不均衡优化经验

背景 高并发接口&#xff0c;引入redis作为缓存之后&#xff0c;运行一段时间发现redis各个节点在高峰时段的访问量严重不均衡&#xff0c;有的节点访问量7000次/s&#xff0c;有的节点访问量500次/s 此种现象虽然暂时不影响系统使用&#xff0c;但是始终是个安全隐患&#x…

ARM进阶:内存屏障(DMB/DSB/ISB)的20个使用例子详解

在上一节内存屏障指令之DMB、DSB和ISB详解中&#xff0c;介绍了一下内存屏障的三个指令的作用并举了一些例子&#xff0c;对于内存屏障指令的使用时机&#xff0c;与处理器架构(比如Cortex-M和Cortex-A)和处理器的系统实现(同样的架构&#xff0c;有不同的实现&#xff0c;如ST…

大厂必面:你们系统qps多少,怎么部署的?假设每天有几千万请求,该如何部署?

前言 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;很多小伙伴要拿高薪&#xff0c;这就要面大厂、面架构&#xff0c;拿高薪。 在高级开发面试、大厂面试、架构师的面试过程中&#xff0c;常常会遇到下面的问题&#xff1a; 你们系统qps多少&#xff1f;怎么部署的&…

第三章 图论 No.4最小生成树的简单应用

文章目录 裸题&#xff1a;1140. 最短网络裸题&#xff1a;1141. 局域网裸题&#xff1a;1142. 繁忙的都市裸题&#xff1a;1143. 联络员有些麻烦的裸题&#xff1a;1144. 连接格点 存在边权为负的情况下&#xff0c;无法求最小生成树 裸题&#xff1a;1140. 最短网络 1140. 最…

【三极管双稳态电路】2022-3-5

缘由multisim仿真问题-嵌入式-CSDN问答

《算法竞赛·快冲300题》每日一题:“ 盲文文字编码”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 盲…

《cuda c编程权威指南》05 - cuda矩阵求和

目录 1. 使用一个二维网格和二维块的矩阵加法 1.1 关键代码 1.2 完整代码 1.3 运行时间 2. 使用一维网格和一维块的矩阵加法 2.1 关键代码 2.2 完整代码 2.3 运行时间 3. 使用二维网格和一维块的矩阵矩阵加法 3.1 关键代码 3.2 完整代码 3.3 运行时间 1. 使用一个二…

==和equals():比较对象等不等?

引言&#xff1a; 在编程中&#xff0c;我们常常需要判断两个对象是否相等。而在Java中&#xff0c;有两种常用的方法&#xff1a;使用""运算符和调用equals()方法。这两个方法有什么区别呢&#xff1f;它们又有哪些有趣的应用呢&#xff1f;让我们一起来探索一下吧&…

RTT学习笔记12-KConfig 语法学习

KConfig 语法学习 RTT 官方教程 https://www.rt-thread.org/document/site/#/development-tools/build-config-system/Kconfig 我自己写的IIC配置 menuconfig BSP_USING_I2C # I2C 菜单bool "Enable I2C BUS" # 提示I2C 菜单default n # 默认不使能I2C 菜单…

第三章 图论 No.3 flody之多源汇最短路,传递闭包,最小环与倍增

文章目录 多源汇最短路&#xff1a;1125. 牛的旅行传递闭包&#xff1a;343. 排序最小环&#xff1a;344. 观光之旅345. 牛站 flody的四个应用&#xff1a; 多源汇最短路传递闭包找最小环恰好经过k条边的最短路 倍增 多源汇最短路&#xff1a;1125. 牛的旅行 1125. 牛的旅行 …