LayUI可编辑表格

这篇博客详细介绍了如何利用LayUI框架创建可编辑的表格,包括数据的动态加载、单元格编辑功能以及保存数据的操作。通过实例代码解析,帮助读者掌握这一功能的应用。

damo1.json

{
  "code": 0,
  "msg": "",
  "count": 100,
  "data": [
    {
      "id": 10000,
      "username": "user-0",
      "sex": "女",
      "city": "昆明",
      "sign": "签名-0"
    },
    {
      "id": 10001,
      "username": "user-1",
      "sex": "男",
      "city": "楚雄",
      "sign": "签名-1"
    },
    {
      "id": 10002,
      "username": "user-2",
      "sex": "女",
      "city": "富源",
      "sign": "签名-2"
    },
    {
      "id": 10003,
      "username": "user-3",
      "sex": "女",
      "city": "富源",
      "sign": "签名-3"
    },
    {
      "id": 10004,
      "username": "user-4",
      "sex": "男",
      "city": "富源",
      "sign": "签名-4"
    },
    {
      "id": 10005,
      "username": "user-5",
      "sex": "女",
      "city": "长沙",
      "sign": "签名-5"
    },
    {
      "id": 10006,
      "username": "user-6",
      "sex": "女",
      "city": "桂林",
      "sign": "签名-6"
    },
    {
      "id": 10007,
      "username": "user-7",
      "sex": "男",
      "city": "长春",
      "sign": "签名-7"
    }
  ]
}

index.html

<!DOCTYPE html>
<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="layui/css/layui.css">
    <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>
<table class="layui-table" lay-data="{url:'./demo1.json'}" >
    <thead>
        <tr>
            <th lay-data="{type:'checkbox'}">ID</th>
            <th lay-data="{field:'id', width:80, sort: true}">ID</th>
            <th lay-data="{field:'username', width:120, sort: true, edit: 'text'}">用户名</th>
            <th lay-data="{field:'email', edit: 'text', minWidth: 150}">邮箱</th>
            <th lay-data="{field:'sex', width:80, edit: 'text'}">性别</th>
            <th lay-data="{field:'city', edit: 'text', minWidth: 100}">城市</th>
            <th lay-data="{field:'experience', sort: true, edit: 'text'}">积分</th>
        </tr>
    </thead>
</table>
<script src="layui/layui.js"></script>

<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 -->
<script>
    layui.use('table');
</script>

</body>
</html>

 

在使用 `layui` 框架开发可编辑表格时,若需要实现 `oninput` 事件以支持自动联想输入功能,可以通过以下方式实现。 首先,`layui` 的 `table` 组件本身并未直接提供 `oninput` 事件的支持,但可以通过自定义 `edit` 类型的扩展来实现。具体做法是,在表格的列定义中,使用 `edit: 'text'` 定义输入框,然后通过自定义 JavaScript 代码为该输入框绑定 `oninput` 事件[^1]。 ### 实现步骤 1. 在表格列定义中设置 `edit: 'text'`,表示该列支持文本编辑。 2. 使用 `layui.jquery` 监听表格渲染完成后的事件,为特定列的输入框绑定 `oninput` 事件。 3. 在 `oninput` 事件中,调用联想输入功能的实现逻辑,例如发送 AJAX 请求获取建议内容,并展示在下拉框中。 ### 示例代码 以下是一个实现 `oninput` 事件以支持联想输入功能的示例代码: ```javascript layui.use(['table', 'jquery'], function () { var table = layui.table; var $ = layui.jquery; // 初始化表格 table.render({ elem: '#demoTable', url: '/api/data', cols: [[ { field: 'id', title: 'ID', width: 80 }, { field: 'name', title: '名称', edit: 'text', width: 150 }, { field: 'description', title: '描述', edit: 'text' } ]] }); // 监听单元格编辑事件 table.on('edit(demoTable)', function (obj) { var value = obj.value; // 得到修改后的值 var data = obj.data; // 得到所在行所有数据 var field = obj.field; // 字段 // 如果是名称列 if (field === 'name') { // 获取输入框元素 var input = $(obj.tr).find('input[name="name"]'); // 绑定 oninput 事件 input.on('input', function () { var keyword = $(this).val(); // 获取输入的关键字 // 发送 AJAX 请求获取联想建议 $.ajax({ url: '/api/suggestions', method: 'GET', data: { keyword: keyword }, success: function (res) { // 处理返回的建议数据 console.log('联想建议:', res); // 这里可以实现下拉框展示建议的逻辑 } }); }); } }); }); ``` ### 关键点说明 - **表格渲染**:通过 `table.render` 方法初始化表格,并指定数据源和列定义。 - **监听编辑事件**:通过 `table.on('edit')` 方法监听单元格编辑事件,获取输入框并绑定 `oninput` 事件。 - **联想输入功能**:在 `oninput` 事件中,根据用户输入的关键字发送请求,获取建议内容并展示。 通过以上步骤,可以实现在 `layui` 可编辑表格中支持 `oninput` 事件,从而实现联想输入功能[^1]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值