博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP开发中基于layUI的三级联动效果如何实现
阅读量:6927 次
发布时间:2019-06-27

本文共 3302 字,大约阅读时间需要 11 分钟。

  后台开发常常用到layUI框架,这样才能让整个页面效果看起来美观大方,然而有时候一些原生的效果放到layUI框架上是无法使用的,比如最近遇到了省市县三级联动的select效果。不同于之前的,layUI框架里,需要重视select的lay-filter属性,来监听事件,另外需要form.render()来重新渲染,解决这两大难题,联动也就不再是难题。下面就来为大家分享下吧。

  实现代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>基于 Layui form 组件的省市区级联的实现</title>
<link rel="stylesheet" href="" />
</head>
<body>
<div style="margin: 50px auto; ">
<form class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">选择地区</label>
<div class="layui-input-inline">
<select name="province" lay-filter="province">
<option value="">请选择省</option>
</select>
</div>
<div class="layui-input-inline" style="display: none;">
<select name="city" lay-filter="city">
<option value="">请选择市</option>
</select>
</div>
<div class="layui-input-inline" style="display: none;">
<select name="area" lay-filter="area">
<option value="">请选择县/区</option>
</select>
</div>
</div>
</form>
</div>
<script type="text/javascript" src=";
<script type="text/javascript" src=";
<script>
(function(){
var areaData=Area;
var $, $form,form;
var $selectProvince,$selectCity,$selectArea;

layui.use(['jquery', 'form'], function() {

$ = layui.jquery;
form = layui.form();
$form = $('form');
$selectProvince=$form.find('select[name=province]');
$selectCity=$form.find('select[name=city]');
$selectArea=$form.find('select[name=area]');

form.on('select(province)', function(data){

var value = data.value;
var d = value.split('');
var code = d[0];
var count = d[1];
var index = d[2];
if(count > 0) {
loadCity(areaData[index].mallCityList,index);
$selectCity.parent().show();
} else {
$selectCity.parent().hide();
$selectArea.parent().hide();
$selectCity.find('[data-new=1]').remove();
$selectArea.find('[data-new=1]').remove();
form.render('select');
}
});
form.on('select(city)', function(data){
var value = data.value;
var d = value.split('
');
var code = d[0];
var count = d[1];
var index = d[2];
var areaIndex=d[3];
if(count > 0) {
loadArea(areaData[index].mallCityList[index].mallAreaList);
$selectArea.parent().show();
} else {
$selectArea.parent().hide();
}
});
form.on('select(area)', function(data){

});

loadProvince();

});

function loadProvince(){

for(var i=0,length=areaData.length;i<length;i++){

$selectProvince.append('<option value="'+ areaData[i].provinceCode + '' + areaData[i].mallCityList.length + '' + i + '">'+areaData[i].provinceName+'</option>')
}
form.render('select');
}

function loadCity(citys,areaIndex){

$selectCity.find('[data-new=1]').remove();

$selectArea.find('[data-new=1]').remove();
for(var i=0,length=citys.length;i<length;i++){
$selectCity.append('<option data-new ="1" value="'+ citys[i].cityCode + '' + citys[i].mallAreaList.length + '' + i + '_'+areaIndex+'">'+citys[i].cityName+'</option>')
}
form.render('select');
}

function loadArea(areas){

$selectArea.find('[data-new=1]').remove();
$selectArea.find('[data-new=1]').remove();

for(var i=0,length=areas.length;i<length;i++){

$selectArea.append('<option data-new ="1" value="'+ areas[i].areaCode+'">'+areas[i].areaName +'</option>')
}
form.render('select');
}
})()

</script>

</body>
</html>

  相信现在大家已经知道是如何实现的了,如果还存在有疑问的程序开发者,可以留言给我们,欢迎大家留言共同讨论学习。本文由专业的郑州app开发公司燚轩科技整理发布,如需转载请注明出处。

转载于:https://blog.51cto.com/13686158/2141838

你可能感兴趣的文章
Exchange&Lync常用Powershell总结
查看>>
多线程 和 htm l总结
查看>>
4月11日项目管理师作业
查看>>
springmvc整合mybatis框架源码 bootstrap html5
查看>>
Linux基础服务之FTP
查看>>
『中级篇』Dockerfile实战(19)
查看>>
lnmp安装---源码安装mysql5.6 -- nginx -- php -- memached
查看>>
实时同步inotify+rsync的简单部署
查看>>
MogileFS
查看>>
两个java客户端程序
查看>>
数据结构和算法分析之线性表
查看>>
理解volatile
查看>>
zabbix管理与使用
查看>>
linux服务器上安装Mysql数据库
查看>>
mysql kernel: nf_conntrack version 0.5.0
查看>>
每天都在记录新事物
查看>>
Python环境安装
查看>>
墙壁网线插座风波
查看>>
我的友情链接
查看>>
iOS内存暴增问题追查与使用陷阱
查看>>