layui父表单获取子表单的值完成修改操作
最近在做项目时,学着用layui开发后台管理系统。
但在做编辑表单时遇到了一个坑。
点击编辑时会出现一个弹窗。
我们需要从父表单传值给子表单。content是传值给子表单
layer.open({ type : 2, title : "编辑管理员", content : "Admin_edit?id="+e.data.id, area : [ "420px", "420px" ], btn : [ "确定", "取消" ], yes : function(e, t) {
之后这一步,遇到了一个坑,一直以为弹窗是运行在子窗口的jsp文件上。用var data = $("#id").val()取值,结果发现获取的数据上无法识别。
后来百度了下,发现弹窗取子窗口值是需要父窗口提取子窗口的值。
else if ("edit" === e.event) { t(e.tr); layer.open({ type : 2, title : "编辑管理员", content : "Admin_edit?id="+e.data.id, area : [ "420px", "420px" ], btn : [ "确定", "取消" ], yes : function(e, t) { /*var l = window["layui-layer-iframe"+ e], r = "LAY-user-back-submit", n = t.find("iframe").contents().find("#"+ r); l.layui.form.on("submit("+ r + ")",function(t) { t.field; layer.msg(i); console.log("sssssssss"); i.reload("LAY-user-front-submit"), layer.close(e) }), n.trigger("click");*/ var id = parent.layer.getChildFrame('#id').val(); var username = parent.layer.getChildFrame('#username').val(); var password = parent.layer.getChildFrame('#username').val(); alert(username); $.post("Admin_save",{ id:id, username:username, password:password }, function(data){ if(data.code==200){ //location.reload(); i.reload('LAY-user-back-manage'); layer.msg("修改成功"); layer.close(e); }else{ layer.msg("请求失败!"); } }) }, success : function( e, t) { } }) } })
父窗口取值子窗口的方法是 var password = parent.layer.getChildFrame('#username').val();
还有另一种方法:
,add: function(){ layer.open({ type: 2 ,title: '添加管理员' ,content: 'adminform.jsp' ,area: ['420px', '420px'] ,btn: ['确定', '取消'] ,yes: function(index, layero){ var body = layer.getChildFrame('body', index); var iframeWin = window[layero.find('iframe')[0]['name']];//得到iframe页的窗口对象,执行iframe页的方法: var username=iframeWin.document.getElementById("username").value;
注意index 和 layero 这两个属性,不要打错了,要对应function。
用这个就可以实现layui js编辑。