基于layui的省市区三级联动(数据交互)

5,686 阅读1分钟

项目中用到了省市区三级联动的一个效果

于是借助layui的下拉框和回调,用ajax请求完成动态的省市区三级联动

话不多说上代码

html代码:

<div class="labcon layui-form farm_selet">
		<div class="province">
			<select name="province" lay-filter="province">
				<option value="">省份</option>
			</select> 
		</div>
		<div class="city">
			<select name="city" lay-filter="city">
				<option value="">城市</option>
			</select> 
		</div>
		<div class="area">
			<select name="area" lay-filter="area">
				<option value="">区/县</option>
			</select>
		</div>
		<div class="area_text">请选择农场所在地的省份</div>
					</div>

js代码如下:

//省市区三级联动
function provincialLevel(){
	/*省份菜单*/
getPost(urlListByParentId,{"parentId":0},localStorage.getItem("ACCESSTOKEN"),function(res){
	if(res.respCode == 0){
		if(res.obj.list.length>0){
			var str="";
			res.obj.list.forEach(function(ele,index){
				str='<option value="'+ele.id+'">'+ele.areaName+'</option>';
				$('.company_info .province select').append(str);
			})
			form.render('select');
		}
		
	}
})
/*城市菜单*/
form.on('select(province)',function(data){
	$('.company_info .city select').empty();//选择省的时候清空城市地区的值
	$('.company_info .city select').html('<option value="">城市</option>');
	$('.company_info .area select').empty();
	$('.company_info .area select').html('<option value="">区/县</option>');
	if(data.value){
		var ajaxJson = {
			  	"parentId":data.value
			}
		getPost(urlListByParentId,ajaxJson,localStorage.getItem("ACCESSTOKEN"),function(res){
			if(res.respCode == 0){
				if(res.obj.list.length>0){
					var str="";
					res.obj.list.forEach(function(ele,index){
						str='<option value="'+ele.id+'">'+ele.areaName+'</option>';
						$('.company_info .city select').append(str);
					})
					form.render('select');
				}
			}
		})
	}
})
/*区县菜单*/
form.on('select(city)',function(data){
	$('.company_info .area select').empty();//选择市的时候清空区的值
	$('.company_info .area select').html('<option value="">区/县</option>');
	if(data.value){
		var ajaxJson = {
			  	"parentId":data.value
			}
		getPost(urlListByParentId,ajaxJson,localStorage.getItem("ACCESSTOKEN"),function(res){
			if(res.respCode == 0){
				if(res.obj.list.length>0){
					var str="";
					res.obj.list.forEach(function(ele,index){
						str='<option value="'+ele.id+'">'+ele.areaName+'</option>';
						$('.company_info .area select').append(str);
					})
					form.render('select');
					}
				}
			})
		}
	})
}

总的来说比较简单的,理解他的逻辑其实非常简单,封装好了拿去用。