0
点赞
收藏
分享

微信扫一扫

layui表格编辑功能(给iframe弹出层赋值)

捡历史的小木板 2022-02-20 阅读 96

先看父页面的数据表格图
在这里插入图片描述

当点击编辑按钮时,弹出子窗口并赋值

#行工具栏代码
<script type="text/html" id="trtool">
            <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑信息</a>
            <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除用户</a>
</script>
<table class="layui-hide" id="user" lay-filter="table_user"></table>

		/**
         * 监听表格行工具事件
         */
        //监听表格行工具事件
        table.on('tool(table_user)', function(obj){
        //table_user为表格的lay-filter的值
        //获取当前操作的tr的相关数据
            var data = obj.data;
            console.log(data)
            //判断事件名,做出不同的操作
            if(obj.event === 'edit'){

                layer.open({
                    title: '编辑用户',
                    type: 2,
                    shade: 0.2,
                    maxmin:true,
                    shadeClose: true,
                    area: ['50%', '50%'],
                    content: '/user/edit/',
                    success: function(layero, index){
                    // #aaa 表示的是弹出子页面的div的id值,
                        var div = layero.find('iframe').contents().find('#aaa');
                        var body = layer.getChildFrame('body', index);
<!--                        console.log(div)-->
						//获取子页面的index
                        var iframeWindow = window['layui-layer-iframe'+ index]
                        //给子页面id=aaa的dev里的不同ID值的元素赋值
                        div.find("#id").val(data.id);
                        div.find("#username").val(data.username);
                        div.find("#nickname").val(data.nickname);
                        div.find("#email").val(data.email);
                        div.find("#signature").val(data.signature);
<!--                        body.find("#username").val(data.username);-->
                    }
                });
                //省略多余js代码

如下是content: ‘/user/edit/’, 对应的子页面

{% load static %}
<html>
<head>
    <meta charset="utf-8">
    <title>layui</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="{% static  'css/layui.css' %}" media="all">
    <link rel="stylesheet" href="{% static 'layuimini/css/public.css' %}" media="all">
    <style>
        body {
            background-color: #ffffff;
        }
    </style>
</head>
<body>

<div class="layui-form layuimini-form" id="aaa">
    <div class="layui-form-item" >
        <label class="layui-form-label required">用户id</label>
        <div class="layui-input-block">
            <input type="text" name="id"  id="id" value="" class="layui-input" readonly>
        </div>
    </div>
    <div class="layui-form-item" >
        <label class="layui-form-label required">用户名</label>
        <div class="layui-input-block">
            <input type="text" name="username" id="username" lay-verify="required" lay-reqtext="用户名不能为空" placeholder="请输入用户名" value="" class="layui-input" >
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label required">昵称</label>
        <div class="layui-input-block">
            <input type="text" name="nickname" id="nickname" lay-verify="required" lay-reqtext="昵称不能为空" placeholder="请输入昵称" value="" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">所属角色</label>
            <div class="layui-input-block">
               <select name="roles" id="roles" lay-verify="required" lay-filter="xmFilter">
                   <option value=""></option>
               </select>
            </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">邮箱</label>
        <div class="layui-input-block">
            <input type="email" name="email" id="email" placeholder="请输入邮箱" value="" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">个性签名</label>
        <div class="layui-input-block">
            <input type="text" name="signature" id="signature" placeholder="请输入个性签名" value="" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
        </div>
    </div>
</div>
</div>
<script src="{% static 'layui.js' %}" charset="utf-8"></script>
<script>
    layui.use(['form'], function () {
        var form = layui.form,
            layer = layui.layer,
            $ = layui.$;

        //监听提交
        form.on('submit(saveBtn)', function (data) {
            var index = layer.alert(JSON.stringify(data.field), {
                title: '最终的提交信息'
            }, function () {
                $.ajax({
                     url:'/user/edit/',
                     type:'post',
                     async : false,
                     data:data.field,
                 });
                // 关闭弹出层
                layer.close(index);
                var iframeIndex = parent.layer.getFrameIndex(window.name);
                parent.layer.close(iframeIndex);
                console.log(res)
            });

            return false;
        });
        //动态获取角色
        $.ajax({
                url: '/roles/data/',
                dataType: 'json',
                type: 'get',
                success: function (data) {
                    console.log(data);//下面会提到这个data是什么值
                    //使用循环遍历,给下拉列表赋值
                    $.each(data.data, function (index, value) {
                        // console.log(value.department_id);
                        $('#roles').append(new Option(value.title,value.id));// 下拉菜单里添加元素
                    });
                    layui.form.render("select");//重新渲染 固定写法
                }
        });

    });
</script>
</body>
</html>

var div = layero.find('iframe').contents().find('#aaa'); 和子页面的 <div class="layui-form layuimini-form" id="aaa"> 是对应的,这样当点击编辑按钮就可以自动赋值到子页面的表单,然后根据具体情况去修改后传到后端去进行数据库的修改。

点击编辑按钮
在这里插入图片描述
至此,功能实现,作此记录方便日后翻阅。

举报

相关推荐

Layui弹出层分割线

0 条评论