Layui编辑页面的数据回显

本文详细讲解了如何使用Layui框架在数据表格编辑功能中,通过getQueryVariable获取用户ID,并将之与服务器返回的数据结合,实现通过表单回填数据的过程。重点涉及表单赋值和URL参数管理技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Layui数据的回返

以数据表格中的编辑为例(如下图)

编辑页面
user_list(表格数据)页面代码

<table class="layui-hide" id="currentTableId" lay-filter="test"></table>
/*此处是操作功能 */
<script type="text/html" id="currentTableBar">
            <a class="layui-btn 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>

<script>
    layui.use(['form', 'table', 'layer'], function () {
    var $ = layui.jquery,
        form = layui.form,
        table = layui.table,
        layer = layui.layer;

    // 监听工具栏事件
    table.on('tool(test)', function (obj) {
        var data = obj.data;
       //console.log(data)
        if (obj.event === 'edit') {
            var index = layer.open({
                title: '编辑用户',
                type: 2,
                shade: 0.2,
                maxmin:true,
                shadeClose: true,
                area: ['60%', '90%'],
                content: './user-edit.html?id=' + data.UserId,  //此处?后面的id需要和 getQueryVariable(" ")括号里面的值相同
                success: function (obj) {
                    var data = obj.data;
                    form.val('From', {  //此处要用layui 表格赋值 的方法,最好不要用juqery(例如:$("#userid").val(data.UserId);)赋值的方法
                        "userid": data.UserId,
                        "username": data.Name,
                        "password": data.Password,
                        "phone": data.Phone,
                        "email": data.Email,
                        "usertype": data.UserTypeId
                    })
                }
            $(window).on("resize", function () {
                layer.full(index);
            });
            return false;
        } 
});
</script>
  

注意:

  1. content: ‘./user-edit.html?id=’ + data.UserId 此处?后面的id需要和 getQueryVariable(" ")括号里面的值相同
  2. 进行数据回返时需要通过layui表单赋值进行反值,form.val(‘From’, { })中的"From"即 edit.html页面中的class=“layui-form” 所在元素属性 lay-filter="" 对应的值

getQueryVariable方法编码如下:

// 获取url参数值
function getQueryVariable(key) {
    var url = location.search;
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for (var i = 0; i < strs.length; i++) {
            theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
            
        }
    }
    var value = (theRequest[key] == null || theRequest[key] == undefined) ? null : theRequest[key];
    return value;
}

getQueryVariable方法用来获取url参数值,即获取layui表格所需编辑内容的id

edit.js编辑页面js代码如下:

 var user_id = getQueryVariable("id");
 Ajax($, layer, "Get", "http://192.168.0.239:5000/users/GetUserById?user_id=" + user_id, null, function (obj) {  
        var data = obj.data[0]; // 因为data为数组,所以需要在data后面加一个[]
        //data: Array(1)
        //0: {UserId: "02", Name: "LZF", Password: "lzf123", Phone: "4673892", Email: "lzf123@qq.com", …}
// length: 1
        console.log(data);
            form.val("Form", {
                "userid": data.UserId,
                "username": data.Name,
                "password": data.Password,
                "phone": data.Phone,
                "email": data.Email,
                "usertype": data.UserTypeId
            })
    })

注意: 此处 “http://192.168.0.239:5000/users/GetUserById?user_id=” + user_id 中 ? 后面的值需要和被赋值的值相同 此处则是需要和 user_id 相同

layui中,编辑弹窗回显可以通过使用form.val()方法来实现。具体步骤如下: 1. 在打开编辑弹窗之前,先获取需要编辑数据,并将数据赋值给表单元素。 2. 在弹窗中,表单元素的name属性需要与获取到的数据中的字段名相同。 3. 在弹窗中,使用form.val()方法将获取到的数据回显到表单中。 下面是一个示例代码: HTML代码: ``` <form class="layui-form" action=""> <div class="layui-form-item"> <label class="layui-form-label">用户名</label> <div class="layui-input-block"> <input type="text" name="username" 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-block"> <input type="radio" name="sex" value="男" title="男"> <input type="radio" name="sex" value="女" title="女"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">城市</label> <div class="layui-input-block"> <select name="city" lay-verify="required"> <option value=""></option> <option value="北京">北京</option> <option value="上海">上海</option> <option value="广州">广州</option> <option value="深圳">深圳</option> </select> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button> <button type="reset" class="layui-btn layui-btn-primary">重置</button> </div> </div> </form> ``` JS代码: ``` // 获取需要编辑数据 var data = { username: '张三', sex: '男', city: '北京' }; // 打开编辑弹窗之前,将数据赋值给表单元素 $('input[name="username"]').val(data.username); $('input[name="sex"][value="'+data.sex+'"]').attr('checked', true); $('select[name="city"]').val(data.city); // 在弹窗中,使用form.val()方法将获取到的数据回显到表单中 form.val('example', data); ``` 在上面的代码中,form.val()方法的第一个参数是表单的lay-filter属性值,第二个参数是需要回显数据对象。在这个例子中,表单的lay-filter属性值为example。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值