省市县 三级联动

24 篇文章 0 订阅
省市区数据库级联查询

前端代码:

<div class="row cl">
					<label class="form-label col-xs-4 col-sm-2"><span
						class="c-red">*</span>地区:</label>
					<div class="formControls col-xs-8 col-sm-9">
					<input type="hidden" name="regionId" id="regionId" value="${aVehDate.regionId }">
					<input type="hidden" name="xzqhdm" id="xzqhdm" value="${aVehDate.xzqhdm }">
						<span>
							<select id="region1" class="custom-select" onchange="return selectRegion('region1','region2','regionId');">
								 <option value="-1">请选择</option>
							</select>
							<select style="width:100px;" id="region2" class="custom-select" onchange="return selectRegion('region2','region3','regionId');">
							 <option value="-1" >请选择</option>
							</select>
							<select style="width:100px;" id="region3" class="custom-select" onchange="return selectRegion('region3','region4','regionId');">
							 <option value="-1">请选择</option>
							</select>
						</span>
					</div>
				</div>

js:

/**
 * 查询地区
 * 
 * @param currId
 *            当前元素的Iid
 * @param tarId
 *            目标元素的Id
 * @param finiId
 *            最终存储值的id
 * @returns
 */
function selectRegion(currId, tarId, finiId) {
	console.log(projectName);
	var curr = $("#" + currId);
	var parentId = "0";
	var strs = new Array();
	strs = curr.val().split("_");
	if (curr != 'undefined' && strs.length > 1) {
		parentId = strs[0];
	}

	/* 如果取不到值 */
	if (parentId == '') {
		parentId = "0";
	}
	if (tarId == '') {
		return false;
	}

	if (finiId != '') {
		$("#" + finiId).val(parentId);
		$("#xzqhdm").val(strs[1]);
	}

	var tar = $("#" + tarId);
	/* ajax请求服务器,获取json数据 */
	$.post(

	/* "/usersCenter-web-head/" + "/outer/client/regionList.htm", */
			projectName + "/back/outer/regionList.htm", "json={'id':'"
			+ parentId + "'}", function(data) {
		if (data.code == '0') {
			var region = data.data.one;

			/*
			 * 拼装的目标HMTL <option value='-1'>请选择</option>
			 */
			var childrenList = region.childrenList;
			var resSb = "<option value='-1'>请选择</option>";
			if(currId =="region1"){
				$("#region3").html(resSb);
			}
			for (var i = 0; i < region.childrenList.length; i++) {
				var regionTemp = childrenList[i];
				resSb += "<option id='" + regionTemp.id + "' value='"
						+ regionTemp.id + "_" + regionTemp.areacode + "'>"
						+ regionTemp.name + "</option>";
			}

			// alert(resSb);
			tar.html(resSb);
		} else {
			console.error(data.info);
		}
	}, 'json');
	return false;
}

/**
 * 查询地区update用
 * 
 * @returns
 */
function updataRegion() {
	var region1 = $("#region1");
	var region2 = $("#region2");
	var region3 = $("#region3");
	var fin = $("#regionId").val();
	var parentId = fin;

	/* 如果取不到值 */
	if (parentId == '') {
		parentId = "0";
	}

	/* ajax请求服务器,获取json数据 */
	$.post(

	/* "/usersCenter-web-head/" + "/outer/client/regionList.htm", */
			projectName + "/back/outer/regionList.htm", "json={'id':'"
			+ parentId + "'}", function(data) {
		if (data.code == '0') {
			var region = data.data.one;

			/*
			 * 拼装的目标HMTL <option value='-1'>请选择</option>
			 */
			var childrenList = region.treeRegion[0].childrenList;
			var childrensList = region.treeRegion[1].childrenList;
			var parentRegion = region.parentRegion;
			var shengId = region.parentRegion.parentRegion.id;
			var optionDom = $("#" + shengId).attr('selected', 'selected');
			//二级菜单拼接
			var resSb = "";
			//三级菜单拼接
			var renSb = "";
			for (var i = 0; i < childrenList.length; i++) {
				var regionTemp = childrenList[i];
				if (childrenList[i].id == parentRegion.id) {
					resSb += "<option selected = 'selected' value='"
							+ regionTemp.id + "_" + regionTemp.areacode + " '>"
							+ regionTemp.name + " </option>";
				} else {
					resSb += "<option value='" + regionTemp.id + "_"
							+ regionTemp.areacode + "'>" + regionTemp.name
							+ "</option>";
				}
			}
			for (var i = 0; i < childrensList.length; i++) {
				var regionTemp = childrensList[i];
				if (childrensList[i].id == parentId) {
					renSb += "<option selected = 'selected' value='"
							+ regionTemp.id + "_" + regionTemp.areacode + " '>"
							+ regionTemp.name + " </option>";
				} else {
					renSb += "<option value='" + regionTemp.id + "_"
							+ regionTemp.areacode + "'>" + regionTemp.name
							+ "</option>";
				}

			}

			// alert(resSb);
			region2.html(resSb);
			region3.html(renSb);
		} else {
			console.error(data.info);
		}
	}, 'json');
	return false;
}


/**
 * info详细页面地址显示:省市县
 * @returns
 */
function infoRegion() {
	var regionName = $("#regionName");
	var fin = $("#regionId").val();
	var parentId = fin;

	/* 如果取不到值 */
	if (parentId == '') {
		parentId = "0";
	}

	/* ajax请求服务器,获取json数据 */
	$.post(

	/* "/usersCenter-web-head/" + "/outer/client/regionList.htm", */
			projectName + "/back/outer/regionList.htm", "json={'id':'"
			+ parentId + "'}", function(data) {
		if (data.code == '0') {
			var region = data.data.one;

			/*
			 * 拼装的目标HMTL <option value='-1'>请选择</option>
			 */
			var childrensList = region.treeRegion[1].childrenList;
			//省
			var province =region.parentRegion.parentRegion.name;
			//市
			var city =region.parentRegion.name;
			for (var i = 0; i < childrensList.length; i++) {
				var regionTemp = childrensList[i];
				if (childrensList[i].id == parentId) {
					regionName.html(province+city+regionTemp.name);
				}
			}

			// alert(resSb);
		} else {
			console.error(data.info);
		}
	}, 'json');
	return false;
}

控制层代码就是一个查询数据库的:
关于全国地区表数据链接:a_region.sql
数据库中包含省份 城市 区/市/县 通过父类id进行关联分级

----------------------补充一点东西:--------------------------------
因为我没有放控制层代码。是因为控制层是访问的接口。
说一下js中那一段
在这里插入图片描述

有些人说不知道这一段是啥。数据库中也没有。
这是在pojo实体类中定义的 子类的实体类集合
在这里插入图片描述

这个吧~ 在mapper中写个关联查询就行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
之前从网上找的三级联动都太老了,数据也都是很久之前的数据,所以自己把从国家统计局扒下来的省市三级联动数据做了整理,目前最新的三级联动,童叟无欺。大家看北京市和天津市的几个分区就知道是最新的了。 INSERT INTO `address` VALUES (1, '110000', 0, '北京市', 1); INSERT INTO `address` VALUES (2, '110100', 110000, '市辖区', 2); INSERT INTO `address` VALUES (3, '110101', 110100, '东城区', 3); INSERT INTO `address` VALUES (4, '110102', 110100, '西城区', 3); INSERT INTO `address` VALUES (5, '110105', 110100, '朝阳区', 3); INSERT INTO `address` VALUES (6, '110106', 110100, '丰台区', 3); INSERT INTO `address` VALUES (7, '110107', 110100, '石景山区', 3); INSERT INTO `address` VALUES (8, '110108', 110100, '海淀区', 3); INSERT INTO `address` VALUES (9, '110109', 110100, '门头沟区', 3); INSERT INTO `address` VALUES (10, '110111', 110100, '房山区', 3); INSERT INTO `address` VALUES (11, '110112', 110100, '通州区', 3); INSERT INTO `address` VALUES (12, '110113', 110100, '顺义区', 3); INSERT INTO `address` VALUES (13, '110114', 110100, '昌平区', 3); INSERT INTO `address` VALUES (14, '110115', 110100, '大兴区', 3); INSERT INTO `address` VALUES (15, '110116', 110100, '怀柔区', 3); INSERT INTO `address` VALUES (16, '110117', 110100, '平谷区', 3); INSERT INTO `address` VALUES (17, '110118', 110100, '密云区', 3); INSERT INTO `address` VALUES (18, '110119', 110100, '延庆区', 3); INSERT INTO `address` VALUES (19, '120000', 0, '天津市', 1); INSERT INTO `address` VALUES (20, '120100', 120000, '市辖区', 2); INSERT INTO `address` VALUES (21, '120101', 120100, '和平区', 3); INSERT INTO `address` VALUES (22, '120102', 120100, '河东区', 3); INSERT INTO `address` VALUES (23, '120103', 120100, '河西区', 3); INSERT INTO `address` VALUES (24, '120104', 120100, '南开区', 3); INSERT INTO `address` VALUES (25, '120105', 120100, '河北区', 3); INSERT INTO `address` VALUES (26, '120106', 120100, '红桥区', 3); INSERT INTO `address` VALUES (27, '120110', 120100, '东丽区', 3); INSERT INTO `address` VALUES (28, '120111', 120100, '西青区', 3); INSERT INTO `address` VALUES (29, '120112', 120100, '津南区', 3); INSERT INTO `address` VALUES (30, '120113', 120100, '北辰区', 3); INSERT INTO `address` VALUES (31, '120114', 120100, '武清区', 3); INSERT INTO `address` VALUES (32, '120115', 120100, '宝坻区', 3); INSERT INTO `address` VALUES (33, '120116', 120100, '滨海新区', 3); INSERT INTO `address` VALUES (34, '120117', 120100, '宁河区', 3); INSERT INTO `address` VALUES (35, '120118', 120100, '静海区', 3); INSERT INTO `address` VALUES (36, '120119', 120100, '蓟州区', 3);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

散装程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值