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) {

                                                                    
                                                                    
                                                                }
                                                            })
                                                }
                                            })
View Code

父窗口取值子窗口的方法是 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编辑。

 

posted @ 2020-03-18 13:44  xxxxxyq  阅读(2240)  评论(0编辑  收藏  举报