Layui数据表格中动态插入行&&插入下拉框

本文介绍在已加载的layui数据表格动态插入一行的方法,包括设置event值、加载表格工具条点击事件、设置插入行数据内容、重载表格。还讲述了插入下拉框的操作,以及当下拉框选择数据后替换成输入框时避免影响样式的代码。

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

想要在已加载的layui数据表格动态的插入一行,首先要在加载表格的时候设置它的event值。因为我这里是点击序号就添加一行,所以我在序号中设置了它的event值!当然在静态表格当中也是一样的操作,在你想要点击的表头添加lay-event="levels"属性进行,双引号里面的名称可以自定义!
在这里插入图片描述

然后就是加载表格的工具条的点击事件了[Tool(’表格的名称’)],设置一些基础参数。

table.on('tool(tabsizezu)', function (obj) { //注:tool是工具条事件名,

var data = obj.data; //获得当前行数据
var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
var tr = obj.tr; //获得当前行 tr 的DOM对象
然后就是判断如果layEvent的值是否等于levels(上面设置的event的值),等于就执行里面的代码,相当于设置了levels的点击事件了
if (layEvent === 'levels') {
var tableBack = table.cache["tabsizezu"];
tableBack.push({
ID: "", S: "",
M: "",  L: "",
XL: "",XXL: "",
SQ: "", SB: "",
SJ: "", SS: "",
SY: "", SE: "",
A: "" , B: "",
C: "",
D: ""
}),

table.cahe后面的中括号里面放的是表格的名称,然后就是设置插入行的数据内容了,我这里的ID、S、M、L等等的是每一个表头的值,插入空白行的话像我这样不给里面的表头赋值就行了!

table.reload("tabsizezu", {
	url:"",
	data: tableBack,
})

然后就是重载表格,放入上面设置的内容就行了,因为这里重载了表格,所以会有一个刷新表格的效果。
然后就是插入下拉框的部分,当event==1的时候就插入一个下拉框,因为我这里是点击数据表格里面的单元格后插入的下拉框,所以,采取来插入HTML的内容的方法来添加下拉框!
if (layEvent === ‘1’) { //查看
var Num = $(this).data().key;

$(this).addClass(Num);
$(this).css({ position: "relative" })
$("." + Num + " input").css({ height: "0px", padding: "0px" });
$("." + Num + " div").css({ display: "none" });
$(this).append('<select class="form-control" id="list" style="position:absolute;top:5px;left:5px;z-index:99;height:30px;width:72px;display:none;border:none;"></select>')

$("#list").css({ display: "block" });
CreateSelect("list", "/SYTFZ/SelectSize");
//这里只是下拉框数据查询的方法而已

var listVal = $("#list").val();
if (listVal != "---请选择---" && listVal != null) {
list2 += Num + ';';
$(this).text("");
$(this).append('<input style="width:80px;border:none;text-align:center;background:#f2f2f2;height:25px;z-index:1;" type="text" class="form-control" Readonly>' + listVal + '');
$("." + Num + " input").css({ height: "0px", padding: "0px" });
Result += listVal + " | ";
}                
}

当下拉框选择了数据之后级把里面的下拉框替换成输入框的形式,同样是采取插入HTML的方法,不过在我们再次点击的时候输入框的内容就会影响到下拉框的样式,所以就要加上这一句代码 :
$("." + Num + " input").css({ height: “0px”, padding: “0px” });
就可以避免影响到下拉框的样式了!

可以使用 layui 的表单组件来实现具有下拉框的一新增操作。下面是一个简单的示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Layui Table Demo</title> <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.min.css"> </head> <body> <table class="layui-table" lay-filter="demo"> <thead> <tr> <th>ID</th> <th>名称</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>测试1</td> <td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td> </tr> <tr> <td>2</td> <td>测试2</td> <td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td> </tr> </tbody> </table> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.min.js"></script> <script> layui.use(['table', 'form'], function(){ var table = layui.table; var form = layui.form; // 监听表格中的操作按钮 table.on('tool(demo)', function(obj){ var data = obj.data; if(obj.event === 'del'){ layer.confirm('确定删除该数据?', function(index){ obj.del(); layer.close(index); }); } }); // 监听新增按钮 $('.add-btn').click(function(){ var html = '<tr>\ <td></td>\ <td>\ <select name="name" lay-verify="required">\ <option value="">请选择</option>\ <option value="测试3">测试3</option>\ <option value="测试4">测试4</option>\ <option value="测试5">测试5</option>\ </select>\ </td>\ <td>\ <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="save">保存</a>\ <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="cancel">取消</a>\ </td>\ </tr>'; $('tbody').append(html); form.render(); }); // 监听保存和取消按钮 table.on('tool(demo)', function(obj){ var data = obj.data; if(obj.event === 'save'){ // TODO: 处理保存事件 } else if (obj.event === 'cancel') { obj.del(); } }); }); </script> </body> </html> ``` 在表格中新增一时,我们需要动态插入 HTML 代码,并使用 `form.render()` 方法重新渲染下拉框组件。同时,我们需要监听保存和取消按钮的点击事件,来处理相应的逻辑。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值