【工作笔记】jquery、ajax省市区级联操作

jsp页面需要做地区级联操作,网上找到一份中国省市区信息并录入到数据库,如下:



后端先获取省级数据:

/**
 * 获取省集合
 */
List<City> cityList = cityService.findCitysByParentId("100000");
model.addAttribute("provinceList",cityList);

页面代码如下:

<div class="form-group has-info">
	<div class="col-xs-12 col-sm-5">
		<select data-province="---- 选择省 ----" id="province" name="province" style="width: 150px;" οnchange="chooseCity('${ctx}');">
			<option>---- 选择省 ----</option>
			<c:forEach items="${provinceList}" var="p">
				<option value="${p.name}" id="${p.id}">${p.name}</option>
			</c:forEach>
		</select>
		<select data-city="---- 选择市 ----" id="city" name="city" style="width: 150px;" οnchange="chooseArea('${ctx}');">
			<option value="" id="" >---- 选择市 ----</option>
		</select>
		<select data-district="---- 选择区 ----" id="district" name="district" style="width: 150px;">
			<option value="" id="" >---- 选择区 ----</option>
		</select>
	</div>
</div>


选择省/市,处理市/县的方法:

var reg = /^[1-9]\d*$/;
/**
 * 处理市
 */
function chooseCity(basepath){
	$("#city").empty();// 清空市
	$("#district").empty();// 清空县
	var re = '<option value="" id="" >' + '---- 选择市 ----' + '</option>';
	$(re).appendTo("#city");
	var rr = '<option value="" id="" >' + '---- 选择区 ----' + '</option>';
	$(rr).appendTo("#district");
	var cityId = $('#province option:selected').attr("id");// 获取选中的省的id
	if(reg.test(cityId)){
		$.ajax({
			url:basepath+"/cityAndCounty/cities?id="+cityId,// 根据省id查询对应市数据
			type:"post",
			success:function(data){
				if(data.code == 1){
					var counties = data.obj;// 得到市级数据
					var result = '';
					// 遍历处理市级数据
					$.each(counties,function(i,v){
						result += '<option value="' + v.name + '" id="' + v.id + '">' + v.name + '</option>';
					});
					// 追加到city下拉框下
					$(result).appendTo("#city");
				}else{
					alert(data.message);
				}
			},
			error:function(data){
				alert(data.message);
			}
		});
	}
}

/**
 * 处理区/县
 * @param cityId
 */
function chooseArea(basepath){
	$("#district").empty();// 清空县
	var re = '<option value="" id="" >' + '---- 选择区 ----' + '</option>';
	$(re).appendTo("#district");
	var proId = $('#city option:selected').attr("id");
	if(reg.test(proId)){
		$.ajax({
			url:basepath+"/cityAndCounty/cities?id="+proId,// 根据市id查询对应县数据
			type:"post",
			success:function(data){
				if(data.code == 1){
					var counties = data.obj;// 得到县级数据
					var result = '';
					// 遍历处理县级数据
					$.each(counties,function(i,v){
						result += '<option value="' + v.name + '" id="' + v.id + '">' + v.name + '</option>';
					});
					// 追加到district下拉框下
					$(result).appendTo("#district");
				}else{
					alert(data.message);
				}
			},
			error:function(data){
				alert(data.message);
			}
		});
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值