顺晟科技
2021-07-12 10:48:28
553
最近用layui+tp5 开发一个项目,看到layui可以用弹出层做编辑界面,正好可以体验一下。
后台管理员管理的编辑打算用弹出层做一下,顺便给大家解决一些坑。
首先必须引入:
layui.use(['layer','form'], function(){
})因为我是将弹出层直接写在列表页没有单独写一个页面
//监听行工具事件
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
obj.del();
layer.close(index);
});
} else if(obj.event === 'edit'){
}
})这是数据表格的监听行代码 我们就在 edit里面写我们的弹出代码
layer.open({
type: 1, //1 页面层 2ifream层
title: '编辑管理员',
shadeClose: true,
shade: 0,
anim: 2, //动画
maxmin: false,
area: ['40%'], //设定弹出层的宽高,我这里设置一个宽,高度自动
btn: ['确定', '取消'],
content: $("#editWindow"), //弹出层的id
success:function(index,layero){
//这里是弹出界面需要用到数据
}
,yes:function(index,layero){
//这里是点击确定后需要发送的数据
}
})<div id="editWindow" style="margin: 10px; display: none;"> // 这个是弹出层的代码 id="editWindow" 需要和 js代码中 content 的id一致 .... 这里写 你的表单代码 </div>
到此,大家应该大概了解弹出层代代码结构,点击编辑后 就可以弹出层了,下面我们说下下拉框和单选怎么取值,赋值,默认值
// 这是给弹出层赋值,即:将数据库里的值填充到表单中
success:function(index,layero){
// 下面用到的data 就是当前行的所有数据
$("#username").val(data.username) // 这是普通的单行文本
$("#status").val(data.status) // 这是个单选
$("#groupId").val(data.groupId) //这是个下拉框
$("#status [value='"+data.status+"']").prop("checked", "checked") // 这是给默认选中项加选中属性
$("#groupId [value='"+data.groupId+"']").prop("selected", "selected") //这是给下拉框添加默认选中
layui.form.render()//重新渲染表单
//你以为这就完了么?
// 监听下拉框的改变
layui.form.on('select(groupId)', function(data){
$("#groupId").val(data.value)
})
// 监听单选按钮
layui.form.on('radio(status)', function(data){
$('#status').val(data.value)
})
},这样就可以 将数据库中的值赋值到弹出层 并且下拉框 和 单选 可以监听到变化 将最后选择的value 发送出去。下面看下编辑的整个js代码
layer.open({
type: 1,
title: '编辑管理员',
shadeClose: true,
shade: 0,
anim: 2, //动画
maxmin: false,
area: ['40%'],
btn: ['确定', '取消'],
content: $("#editWindow"),
success:function(index,layero){
$("#id").val(data.id)
$("#username").val(data.username)
$("#password").val()
$("#email").val(data.email)
$("#status").val(data.status)
$("#groupId").val(data.groupId)
$("#status [value='"+data.status+"']").prop("checked", "checked")
$("#groupId [value='"+data.groupId+"']").prop("selected", "selected")
layui.form.render()
// 监听下拉框的改变
layui.form.on('select(groupId)', function(data){
$("#groupId").val(data.value)
})
// 监听单选按钮
layui.form.on('radio(status)', function(data){
$('#status').val(data.value)
})
},
yes:function(index,layero){
$.post("{:url('Admin/edit')}",{
id: data.id,
username: $('#username').val(),
password: $('#password').val(),
groupId: $('#groupId').val(),
status: $("#status").val(),
},function(data){
console.log(data);
if (data > 0) {
layer.alert('编辑成功',{icon:1,title:'提示'},function(i) {
layer.close(i)
layer.close(index)// 关闭弹出层
// 重载弹出层
$("#editForm")[0].reset()
})
// 重新渲染列表数据
table.reload('test', {
page:{
curr: 1
}
})
}
})
}
})09
2022-12
24
1991-02
02
2022-09
12
2022-05
12
2022-05
11
2022-05