layui iframe弹窗编辑页面提交

子窗口的数据从父窗口的table中获取
子窗口的赋值和提交都在父窗口中执行

父窗口页面

 <table id="LAY-user-manage" lay-filter="LAY-user-manage" class="layui-hide"></table>
<!-- 行工具栏-->
 <script type="text/html" id="table-useradmin-webuser">
	<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
	<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
</script>
<script>
layui.config({
    base: '/layuiAdmin/src/layuiadmin/' //静态资源所在路径
  }).extend({
    index: 'lib/index' //主入口模块
  }).use(['index', 'useradmin', 'table'], function(){
    var $ = layui.$
    ,form = layui.form
    ,table = layui.table
    ,laypage = layui.laypage;

    //table列表渲染
    table.render({
      elem:'#LAY-user-manage',
      height: 'full-200',
      url:'/admin/cases/list',
      title:'解决方案表',
      page: true,
      limit:5,
      limits: [3,5,10],
      cols:[[
          {type:'checkbox',fixed:'left'}
          ,{field:'id', width:80, sort: true,title:'ID'}
          ,{field:'title', width:200, title: '标题'}
          ,{field:'pic',width:250,title:'封面图片',templet:'#imgtmp'}
          ,{field:'content', minWidth:400, title: '内容' }
          ,{field:'sort', width:100, title: '分类' }
          ,{fixed: 'right', width: 165, align:'center', toolbar: '#table-useradmin-webuser'}//对应行工具栏id
        ]]
    });

	//模板中自带的,不懂什么意思,猜测是获取按钮的点击事件
	$('.layui-btn.layuiadmin-btn-useradmin').on('click', function(){
      var type = $(this).data('type');
      active[type] ? active[type].call(this) : '';
    });

    //监听行工具栏
    table.on('tool(LAY-user-manage)',function (obj) {
    //获取行数据
      var data = obj.data;
      console.log(data);
      //点击删除
      if (obj.event === 'del'){
       //删除方法
      } else if (obj.event === 'edit'){
        //点击编辑
        layer.open({
        //打开子窗口
          type: 2
          ,title: '编辑内容'
          ,content: '/admin/cases/edit'
          ,maxmin: true
          ,area: ['800px', '450px']
          ,btn: ['确定', '取消']
          ,success:function (layero, index) {
          //打开子窗口后通过success赋值,两个变量基本是固定写法
            var body = layer.getChildFrame('body', index);
            var iframeWin = window[layero.find('iframe')[0]['name']];

            console.log(data.content);
            
            //给子窗口中的元素赋值
            body.find('input[name="id"]').val(data.id);
            body.find('input[name="title"]').val(data.title);
            body.find('textarea[name="content"]').val(data.content);
            body.find('input[name="pic"]').val(data.pic);

            
          }
          ,yes: function(index, layero){
          //模板自带,固定写法,要注意子窗口中的提交按钮id对应submitID
            var iframeWindow = window['layui-layer-iframe'+ index]//得到iframe页的窗口对象,执行iframe页的方法:
                    ,submitID = 'LAY-user-front-submit'
                    ,submit = layero.find('iframe').contents().find('#'+ submitID);


            //监听提交
            iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
              var field = data.field; //获取提交的字段
              $.ajax({
                url:'/admin/cases/editSave',
                data:field,
                dataType:'json',
                method:'post',
                success:function (res) {
                  layer.msg(res.msg);
                  table.reload('LAY-user-manage');
                }
              });
              layer.close(index); //关闭弹层
            });

            submit.trigger('click');
          }
        });
      }
    })
});
</script>

子窗口页面

<div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin" style="padding: 20px 0 0 0;">
    <div class="layui-form-item layui-hide">
        <label class="layui-form-label">id</label>
        <div class="layui-input-inline">
            <input type="text" name="id"  autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">标题</label>
        <div class="layui-input-inline">
            <input type="text" name="title" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">封面图片</label>
        <div class="layui-input-inline">
            <input type="text" name="pic" lay-verify="required" placeholder="请上传图片" autocomplete="off" class="layui-input" >
        </div>
        <button style="float: left;" type="button" class="layui-btn" id="layuiadmin-upload-useradmin">上传图片</button>
    </div>
    <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">内容</label>
        <div class="layui-input-block">
            <textarea placeholder="请输入内容" name="content" class="layui-textarea"></textarea>
        </div>
    </div>

    <div class="layui-form-item layui-hide">
        <input type="button" lay-submit lay-filter="LAY-user-front-submit" id="LAY-user-front-submit" value="确认">
    </div>
</div>

<script>
    layui.config({
        base: '/layuiAdmin/src/layuiadmin/' //静态资源所在路径
    }).extend({
        index: 'lib/index' //主入口模块
    }).use(['index', 'form', 'upload'], function(){
        var $ = layui.$
            ,form = layui.form
            ,upload = layui.upload ;
            
		//图片上传的配置
        var uploadInst = upload.render({
            elem: '#layuiadmin-upload-useradmin'
            ,url: '/admin/upload' //改成您自己的上传接口
            ,accept: 'images'
            ,exts: 'jpg|png|gif|bmp|jpeg'
            ,method: 'post'
            /*,before: function(obj){
                //预读本地文件示例,不支持ie8
                obj.preview(function(index, file, result){
                    $('#demo1').attr('src', result); //图片链接(base64)
                });
            }*/
            ,done: function(res){
                //如果上传失败
                if(res.code > 0){
                    return layer.msg('上传失败');
                }
                //上传成功
                // $("input[name='pic']").val(res.data.src);
                $(this.item).prev("div").children("input").val(res.data);
            }
            /*,error: function(){
                //演示失败状态,并实现重传
                //#demoText对应一个提示元素,演示文档中使用的是:
                //<div class="layui-upload-list">
   				//	 <img class="layui-upload-img" id="demo1">
   				//	 <p id="demoText"></p>
 				// </div>
 				 
                var demoText = $('#demoText');
                demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
                demoText.find('.demo-reload').on('click', function(){
                    uploadInst.upload();
                });
            } */
        });

    })
</script>

Controller照常写即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值