封装layui模块化三级联动(运行只需要一行代码)

封装layui模块化三级联动(运行只需要一行代码)
1.0百度网盘下载地址(接受6个参数不可复用无返回值)
链接: https://pan.baidu.com/s/1f-juQ_K51ZnZrLWoWKnvVQ 提取码: 5yff

2.0百度网盘下载地址(接受9个参数可复用有返回值)
链接: https://pan.baidu.com/s/12fSfDDOrlDLUtXvncIGigA 提取码: ddsg

非常简单明了的layui的三级联动先上代码1.0(接收6个参数没返回值版本)
html部分

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>layui</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <link rel="stylesheet" href="layui/css/layui.css"  media="all">
  <link rel="stylesheet" href="css/bootstrap.css" />
  <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>
	<div id="main"></div>
<script src="layui/layui.js" charset="utf-8"></script>
<script src="js/jquery.js"></script>
<script>
	//设置模块
	layui.config({
		base:'js/'
	}).use(['test','jquery','form','layedit'], function(){
		    var test = layui.test,
		   			$ = layui.jquery,
		    		form = layui.form;
		    		layedit = layui.layedit;
		    //传参
//		    1.三级联动要放到的div
//		    2.接口地址 可写本地接口和网络接口
//		    3.三级联动的表头字
//		    4.三级联动第一级默认值id
//		    5.三级联动第二级默认值id
//		    6.三级联动第三级默认值id
		    test.init('main','http://localhost:3000/data','三级联动',3,32,321);
		   	form.render();
		});
</script>
</body>
</html>

js部分


layui.define(["jquery","layer",'form','layedit'], function(exports) {
	var $ = layui.jquery,
		layer = layui.layer,
		form = layui.form,
		layedit = layui.layedit;
		var  ZHC_Category = {
			//
			init:function(ID,URL,NAME,Default1,Default2,Default3){
				//定义dom结构
				$("#"+ID+"").append(
				`
					<form class="layui-form" action="">
						<div class="layui-inline">
							<div class="layui-form-item">
							    <label class="layui-form-label" style="width:120px">${NAME}</label>
							    <div class="layui-input-inline">
							        <select name="province" id="province" lay-filter="yiji">
								     	<option value="请选择">请选择</option>
							        </select>
							   	</div>
							    <div class="layui-input-inline">
							      	<select name="city" id="city" lay-filter="erji">
								     	<option value="请选择">请选择</option>
							      	</select>
							    </div>
							    <div class="layui-input-inline">
							      	<select name="town" id="town" lay-filter="sanji">
							        	<option value="请选择">请选择</option>
							     	</select>
							    </div>
							</div>
						</div>
					</form>
				`
				);
				//渲染数据
				var province=$("#province"),
					city=$("#city"),
					town=$("#town");
				var provinceList;
				
				var two;
				//getJSON获取本地json
				$.getJSON(""+URL+"",function(data){
					console.log(data)
					provinceList = data;
					//一级默认选择
					for(var i=0;i<provinceList.length;i++){
						 if(Default1!=provinceList[i].id){
						 	addEle(province,provinceList[i].name);
						 }else if(Default1==provinceList[i].id){
						 	var optionStr1="";
						    optionStr1="<option value="+provinceList[i].name+" selected=''>"+provinceList[i].name+"</option>";
						    province.append(optionStr1);
						    form.render();
						    //二级默认选择
						    for(var j=0;j<provinceList[i].cityList.length;j++){
						    	if(Default2!=provinceList[i].cityList[j].id){
								 	addEle(city,provinceList[i].cityList[j].name);
								 }else if(Default2==provinceList[i].cityList[j].id){
								 	var optionStr2="";
								 	two = j;
								    optionStr2="<option value="+provinceList[i].cityList[j].name+" selected=''>"+provinceList[i].cityList[j].name+"</option>";
								    city.append(optionStr2);
								    form.render();
								     //三级默认选择
								   
								    if(Default3!=undefined||Default3!=null){
								    	for(var k=0;k<provinceList[i].cityList[j].areaList.length;k++){
								    		if(Default3!=provinceList[i].cityList[j].areaList[k].id){
											 	var optionStr3="";
											    optionStr3="<option value="+provinceList[i].cityList[j].areaList[k].name+">"+provinceList[i].cityList[j].areaList[k].name+"</option>";
											    town.append(optionStr3);
											    form.render();
											}else if(Default3==provinceList[i].cityList[j].areaList[k].id){
											 	var optionStr3="";
											    optionStr3="<option value="+provinceList[i].cityList[j].areaList[k].name+" selected=''>"+provinceList[i].cityList[j].areaList[k].name+"</option>";
											    town.append(optionStr3);
											    form.render();
											}
									    }
								    }
								 }
						    }
						 }
					}
					function addEle(ele,value){
						console.log(value);
				    	var optionStr="";
					    optionStr="<option value="+value+">"+value+"</option>";
					    ele.append(optionStr);
					}
					function removeEle(ele){
					    ele.find("option").remove();
					    var optionStar="<option value="+"请选择"+">"+"请选择"+"</option>";
					    ele.append(optionStar);
					}
					var provinceText,cityText,cityItem;
					//如果一级默认默认赋值 监听一级的value给二级
					if(Default1!=undefined||Default1!=null){
						var provinceText = Default1;
						console.log("一级默认");
						 $.each(provinceList,function(i,item){
					        if(provinceText == item.id){
					            cityItem=i;
					            return cityItem
					        }
					    });
					}
					//监听一级选项
					form.on('select(yiji)',function(data){
						var provinceText = data.value;
						console.log("一级变化");
						 $.each(provinceList,function(i,item){
					        if(provinceText == item.name){
					            cityItem=i;
					            return cityItem
					        }
					    });
					    removeEle(city);
					    removeEle(town);
					    $.each(provinceList[cityItem].cityList,function(i,item){
					        addEle(city,item.name)
					    })
					    form.render();
					})
					//如果二级默认默认赋值 监听二级的value给三级

					if(Default3==undefined||Default3==null){
						if(Default2!=undefined||Default2!=null){
							//默认值
							var cityText = Default2;
							console.log("二级默认");
							$.each(provinceList,function(i,item){
						        if(provinceText == item.id){
						            cityItem=i;
						            return cityItem
						        }
						    });
						   
						    $.each(provinceList[cityItem].cityList[two].areaList,function(i,item){
						        addEle(town,item.name)
						    })
						}
					}
					//监听二级选项
					form.on('select(erji)',function(data){
						var cityText = data.value;
						console.log('二级变化');
						removeEle(town);
					    $.each(provinceList,function(i,item){
					        if(provinceText == item.id){
					            cityItem=i;
					            return cityItem
					        }
					    });
					    console.log(cityItem);
					    $.each(provinceList[cityItem].cityList,function(i,item){
					        if(cityText == item.name){
					            for(var n=0;n<item.areaList.length;n++){
					            	console.log(item.areaList[n].name);
					                addEle(town,item.areaList[n].name)
					            }
					        }
					    });
					    form.render();
					})
					form.render();
				})
			}
		}
			
		exports('test', ZHC_Category);
});

模拟后台的json代码

{   

    "data":[
    {  
        "id":1,
        "name":"北京",
        "cityList":
        [
            {   
                "id":11,
                "name":"市辖区",
                "areaList":[
                    {   
                        "id":111, 
                        "name":"东城区"
                    },
                    {   
                        "id":112, 
                        "name":"西城区"
                    },
                    {   
                        "id":113, 
                        "name":"怀柔区"
                    },
                    {   
                        "id":114, 
                        "name":"平谷区"
                    }
                ]
            },
            {
                "id":12,
                "name":"县", 
                "areaList":[
                    {   
                        "id":121, 
                        "name":"密云县"
                    },
                    {   
                        "id":131, 
                        "name":"延庆县"
                    }
                ]
            }
        ]
    },
    {   
        "id":2,
        "name":"上海",
        "cityList":[
            {   
                "id":21,
                "name":"市辖区", "areaList":[
                     {   
                        "id":211, 
                        "name":"黄浦区"
                    },
                     {   
                        "id":212, 
                        "name":"卢湾区"
                    },
                     {   
                        "id":213, 
                        "name":"长宁区"
                    },
                     {   
                        "id":214, 
                        "name":"静安区"
                    },
                     {   
                        "id":215, 
                        "name":"普陀区"
                    },
                     {   
                        "id":216, 
                        "name":"宝山区"
                    },
                     {   
                        "id":217, 
                        "name":"虹口区"
                    },
                     {   
                        "id":217, 
                        "name":"青浦区"
                    },
                    {   
                        "id":219, 
                        "name":"南汇区"
                    }
                ]
            },
            {   
                "id":22,
                "name":"县",
                "areaList":[
                    {   
                        "id":221, 
                        "name":"崇明县"
                    }
                ]
            }
        ]
    },
    {
        "id":3,
        "name":"天津",
        "cityList":[
            {   
                "id":31,
                "name":"市辖区",
                "areaList":[
                    {   
                        "id":311, 
                        "name":"和平区"
                    },
                    {   
                        "id":312, 
                        "name":"河东区"
                    },
                    {   
                        "id":313, 
                        "name":"河西区"
                    },
                    {   
                        "id":314, 
                        "name":"南开区"
                    },
                    {   
                        "id":315, 
                        "name":"河北区"
                    }
                ]
            },
            {
                "id":32,
                "name":"县",
                "areaList":[
                    {   
                        "id":321, 
                        "name":"宁河县"
                    },
                    {   
                        "id":322, 
                        "name":"静海县"
                    },
                    {   
                        "id":323, 
                        "name":"蓟 县"
                    }
                ]
            }
        ]
    },
    {   
        "id":4,
        "name":"重庆",
        "cityList":[
            {   
                "id":41,
                "name":"市辖区",
                "areaList":[
                    {   
                        "id":411, 
                        "name":"万州区"
                    },
                    {   
                        "id":412, 
                        "name":"涪陵区"
                    },
                    {   
                        "id":413, 
                        "name":"渝中区"
                    },
                    {   
                        "id":414, 
                        "name":"大渡口区"
                    },
                    {   
                        "id":415, 
                        "name":"江北区"
                    }
                ]
            },
            {
                "id":42,
                "name":"县",
                "areaList":[
                    {   
                        "id":421, 
                        "name":"綦江县"
                    },
                    {   
                        "id":422, 
                        "name":"潼南县"
                    },
                    {   
                        "id":423, 
                        "name":"彭水苗族土家族自治县"
                    }
                ]
            },
            {
                "id":43,
                "name":"市", "areaList":[
                    {   
                        "id":431, 
                        "name":"江津市"
                    },
                    {   
                        "id":432, 
                        "name":"合川市"
                    }
                ]
            }
        ]
    }
]
}

非常简单明了的layui的三级联动2.0(接收9个参数有返回值版本)
html部分

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>layui</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <link rel="stylesheet" href="layui/css/layui.css"  media="all">
  <link rel="stylesheet" href="css/bootstrap.css" />
  <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>
	<div id="main">
		
	</div>
	<div id="main1">
		
	</div>
<script src="layui/layui.js" charset="utf-8"></script>
<script src="js/jquery.js"></script>
<script>
	//设置模块
	layui.config({
		base:'js/'
	}).use(['test','jquery','form','layedit'], function(){
		    var test = layui.test,
		   			$ = layui.jquery,
		    		form = layui.form;
		    		layedit = layui.layedit;
		    var value = new Array;
		    //传参
				//1.三级联动要放到的div
				//2.接口地址 可写本地接口和网络接口
				//3.三级联动的表头字
				//4.定义第一级select的id以便创建多个联动
				//4.定义第二级select的id以便创建多个联动
				//4.定义第三级select的id以便创建多个联动
				//4.三级联动第一级默认值id
				//5.三级联动第二级默认值id
				//6.三级联动第三级默认值id
				
			
				//获取返回的数组    注!同时函数已经执行一次 
				value = test.init('main','http://localhost:3000/data','三级联动','province','city','town',4,42,422);
		    value.forEach(function(data,index){
		    	value[index] = data
		    })
		    //打印返回的value值
		    console.log(value)
		   	form.render();
		   	
		});
</script>
</body>
</html>

js代码部分



layui.define(["jquery","layer",'form','layedit'], function(exports) {
	var $ = layui.jquery,
		layer = layui.layer,
		form = layui.form,
		layedit = layui.layedit;
		var  ZHC_Category = {
			
			//初始化
			init:function(ID,URL,NAME,selectID1,selectID2,selectID3,Default1,Default2,Default3){
				//定义dom结构
				$("#"+ID+"").append(
				`
					<form class="layui-form" action="">
						<div class="layui-inline">
							<div class="layui-form-item">
							    <label class="layui-form-label" style="width:120px">${NAME}</label>
							    <div class="layui-input-inline">
							        <select name="province" id="${selectID1}" lay-filter="yiji">
								     	<option value="请选择">请选择</option>
							        </select>
							   	</div>
							    <div class="layui-input-inline">
							      	<select name="city" id="${selectID2}" lay-filter="erji">
								     	<option value="请选择">请选择</option>
							      	</select>
							    </div>
							    <div class="layui-input-inline">
							      	<select name="town" id="${selectID3}" lay-filter="sanji">
							        	<option value="请选择">请选择</option>
							     	</select>
							    </div>
							</div>
						</div>
					</form>
				`
				);
				//渲染数据
				var province=$("#"+selectID1+""),
					city=$("#"+selectID2+""),
					town=$("#"+selectID3+""),
					provinceValue,
					cityValue,
					townValue;
				var Url = [];
				var provinceList;
				
				var two;
				
				//必须更改ajax获取数据为同步
				$.ajaxSettings.async = false;
				//getJSON获取本地json或后台接口jsono
				$.getJSON(""+URL+"",function(data){
					console.log(data)
					provinceList = data;
					//一级默认选择
					for(var i=0;i<provinceList.length;i++){
						 if(Default1!=provinceList[i].id){
						 	addEle(province,provinceList[i].name);
						 }else if(Default1==provinceList[i].id){
						 	var optionStr1="";
						    optionStr1="<option value="+provinceList[i].name+" selected=''>"+provinceList[i].name+"</option>";
						    //保留一级的值
						 	provinceValue = provinceList[i].name
						    province.append(optionStr1);
						    form.render();
						    //二级默认选择
						    for(var j=0;j<provinceList[i].cityList.length;j++){
						    	if(Default2!=provinceList[i].cityList[j].id){
								 	addEle(city,provinceList[i].cityList[j].name);
								 }else if(Default2==provinceList[i].cityList[j].id){
								 	var optionStr2="";
								 	two = j;
								    optionStr2="<option value="+provinceList[i].cityList[j].name+" selected=''>"+provinceList[i].cityList[j].name+"</option>";
								    //保留二级的值
						 			cityValue = provinceList[i].cityList[j].name;
								    city.append(optionStr2);
								    form.render();
								     //三级默认选择
								    if(Default3!=undefined||Default3!=null){
								    	for(var k=0;k<provinceList[i].cityList[j].areaList.length;k++){
								    		if(Default3!=provinceList[i].cityList[j].areaList[k].id){
											 	var optionStr3="";
											    optionStr3="<option value="+provinceList[i].cityList[j].areaList[k].name+">"+provinceList[i].cityList[j].areaList[k].name+"</option>";
											    town.append(optionStr3);
											    form.render();
											}else if(Default3==provinceList[i].cityList[j].areaList[k].id){
											 	var optionStr3="";
											    optionStr3="<option value="+provinceList[i].cityList[j].areaList[k].name+" selected=''>"+provinceList[i].cityList[j].areaList[k].name+"</option>";
											    //保留三级的值
						 						townValue = provinceList[i].cityList[j].areaList[k].name;
											    town.append(optionStr3);
											    form.render();
											}
									    }
								    }
								 }
						    }
						 }
					}
					function addEle(ele,value){
				    	var optionStr="";
					    optionStr="<option value="+value+">"+value+"</option>";
					    ele.append(optionStr);
					}
					function removeEle(ele){
					    ele.find("option").remove();
					    var optionStar="<option value="+"请选择"+">"+"请选择"+"</option>";
					    ele.append(optionStar);
					}
					var provinceText,cityText,cityItem;
					//如果一级默认默认赋值 监听一级的value给二级
					if(Default1!=undefined||Default1!=null){
						var provinceText = Default1;
						console.log("一级默认");
						 $.each(provinceList,function(i,item){
					        if(provinceText == item.id){
					            cityItem=i;
					            return cityItem
					        }
					    });
					}
					//监听一级选项
					form.on('select(yiji)',function(data){
						var provinceText = data.value;
						console.log("一级变化");
						//一级改变保存二级vakue值
						provinceValue = data.value;
						if(provinceValue=='请选择'){
							Url[0] = '';
						}else{
							Url[0] = provinceValue;
						};
						Url[1] = '';
						Url[2] = '';
						console.log(Url);
						 $.each(provinceList,function(i,item){
					        if(provinceText == item.name){
					        	
					            cityItem=i;
					            return cityItem
					        }
					    });
					    removeEle(city);
					    removeEle(town);
					    $.each(provinceList[cityItem].cityList,function(i,item){
					        addEle(city,item.name)
					    })
					    form.render();
					})
					//如果二级默认默认赋值 监听二级的value给三级

					if(Default3==undefined||Default3==null){
						if(Default2!=undefined||Default2!=null){
							//默认值
							var cityText = Default2;
							console.log("二级默认");
							$.each(provinceList,function(i,item){
						        if(provinceText == item.id){
						            cityItem=i;
						            return cityItem
						        }
						    });
						   
						    $.each(provinceList[cityItem].cityList[two].areaList,function(i,item){
						        addEle(town,item.name)
						    })
						}
					}
					//监听二级选项
					form.on('select(erji)',function(data){
						var cityText = data.value;
						console.log('二级变化');
						//二级改变保存二级vakue值
						cityValue = data.value;
						if(cityValue=='请选择'){
							Url[1] = '';
						}else{
							Url[1] = cityValue;
						};
						Url[2] = ''
						console.log(Url);
						removeEle(town);
					    $.each(provinceList,function(i,item){
					        if(provinceText == item.id){
					            cityItem=i;
					            return cityItem
					        }
					    });
					    $.each(provinceList[cityItem].cityList,function(i,item){
					        if(cityText == item.name){
					            for(var n=0;n<item.areaList.length;n++){
					                addEle(town,item.areaList[n].name)
					            }
					        }
					    });
					    form.render();
					})
					form.on('select(sanji)',function(data){
						//三级改变保存二级vakue值
						townValue = data.value;
						if(townValue=='请选择'){
							Url[2] = '';
						}else{
							Url[2] = townValue;
						};
						console.log(Url);
					})
					form.render();
					//返回三个value
					Url[0] = provinceValue,
					Url[1] = cityValue,
					Url[2] = townValue;
				});
				console.log(Url);
				return Url
			}
		}
			
		exports('test', ZHC_Category);
});

模块init函数最多接受6个参数版本1.0
第一个 定义三级联动dom的外层div(必填)
第二个 定义了三级联联动请求的后台接口 也可以写本地接口 返回的json形式参考上面的json的代码块标注
第三个 定义三级联动的标题 如果想每个select框有自己的标题 请修改js代码里面的dom结构(必填)
第四个 定义了第一个select默认的value 填对应的id(可不填)
第五个 定义了第二个select默认的value 填对应的id(可不填)
第六个 定义了第三个select默认的value 填对应的id(可不填)
1.0百度网盘下载地址(接受6个参数不可复用无返回值)
链接: https://pan.baidu.com/s/1f-juQ_K51ZnZrLWoWKnvVQ 提取码: 5yff
模块init函数最多接受9个参数版本2.0
第一个 定义三级联动dom的外层div(必填)
第二个 定义了三级联联动请求的后台接口 也可以写本地接口 返回的json形式参考上面的json的代码块标注
第三个 定义三级联动的标题 如果想每个select框有自己的标题 请修改js代码里面的dom结构(必填)
第四个 定义第一级select的id以便创建多个联动(必填)
第五个 定义第二级select的id以便创建多个联动(必填)
第六个 定义第三级select的id以便创建多个联动(必填)
第七个 定义了第一个select默认的value 填对应的id(可不填)
第八个 定义了第二个select默认的value 填对应的id(可不填)
第九个 定义了第三个select默认的value 填对应的id(可不填)
2.0百度网盘下载地址(接受9个参数可复用有返回值)
链接: https://pan.baidu.com/s/12fSfDDOrlDLUtXvncIGigA 提取码: ddsg

不带默认参数的效果
在这里插入图片描述
带默认参数的效果
在这里插入图片描述
注意!
渲染的select dom是比较单一的 如果要更改样式请在js内更改后续解决

优点:简洁明了 小白拿过来直接用 缺点:对后端接口格式有要求 select的dom渲染比较单一布局不是非常自由

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值