最近在做項目時,學着用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編輯。