layer iframe层的使用,传参
父层
<div class="col-xs-4 text-left" style="padding-left: 50px;"><button type="button" class="btn btn-success" onclick="addCategory();">添加</button></div>
点击添加,按钮,执行添加方法
function addCategory() { layer.open({ title:'<img src="{sh::RES}image/add.gif"> 添加分类', type: 2, area: ['700px', '530px'], fix: false, //不固定 maxmin: true, content: '{sh::U("Mall/editcategory")}', success:function(layero,index){ }, end:function(){ var handle_status = $("#handle_status").val(); if ( handle_status == '1' ) { layer.msg('添加成功!',{ icon: 1, time: 2000 //2秒关闭(如果不配置,默认是3秒) },function(){ history.go(0); }); } else if ( handle_status == '2' ) { layer.msg('添加失败!',{ icon: 2, time: 2000 //2秒关闭(如果不配置,默认是3秒) },function(){ history.go(0); }); } } }); }
这个方法,打开一个iframe页面,页面中可以执行一些操作,添加分类,执行完毕后调用一个end方法。这个方法,很有用!
不管执行结果如果,都会调用。
iframe可以传递参数到父页面。
end方法,根据传递的结果,执行一些后续操作。
iframe层
<div class="content"> <form action="" method="post" id="myform" enctype="multipart/form-data"> <div class="form-group row"> <div class="left col-xs-3 text-right"> <label for="">名称:</label> </div> <div class="right col-xs-8 text-left"> <input type="text" class="form-control" id="name" name="name" placeholder=""> </div> </div> <div class="form-group row"> <div class="left col-xs-3 text-right"> <label for="">类别:</label> </div> <div class="right col-xs-8 text-left"> <input type="text" class="form-control" id="name" name="name" placeholder=""> </div> </div> <div class="form-group row"> <div class="left col-xs-3 text-right"> <label for="">图标:</label> </div> <div class="right col-xs-8 text-left"> <input type="file" id="logo" name="logo"> </div> </div> <div class="form-group row"> <div class="left col-xs-3 text-right"> <label for="">启用:</label> </div> <div class="right col-xs-8 text-left"> <input name="status" type="checkbox" checked="checked"> 启用 </div> </div> <div class="form-group text-center submit"> <button type="submit" class="btn btn-primary ">提交</button> </div> </form> </div>
表单提交,提交到后台(表单提交,刷新iframe层页面)
<script type="text/javascript"> var index = parent.layer.getFrameIndex(window.name); var success = '{sh:$success}'; if ( success == '1' ) { parent.$("#handle_status").val('1'); parent.layer.close(index); } else if( success == '2' ) { parent.$("#handle_status").val('2'); parent.layer.close(index); } </script>
收到执行的结果,success,成功是1,失败是2。执行相应的操作。也就是,
传值+关闭iframe层。
父层有一个隐藏的元素,专门用来接收传值的
<input id="handle_status" value="" hidden="hidden">
流程很清晰。
layer很牛逼!
提交后,提示成功与失败,并且刷新页面。一气呵成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!