Layui数据表格如何实现行双击后自动进入编辑模式

雨静酱_7445

雨静酱_7445

2026-07-07

128人浏览

原创

layui表格不支持行双击整行编辑,需通过rowdouble事件定位可编辑列并模拟click触发内置编辑;移动端应降级为点击或长按;编辑后数据存于table.cache中,非原始data数组。

layui 表格原生不支持「行双击 → 整行编辑」,必须拆解为「双击行 → 定位目标列 → 触发该列编辑」,且不能依赖 edittrigger: 'dblclick' 直接生效——它只对单列有效,不作用于整行。

为什么直接配 rowDouble 事件进不了编辑态

因为 table.on('rowDouble(filter)') 只是通知你“哪一行被双击了”,它不自动打开任何单元格的编辑框。Layui 的编辑入口完全由列配置驱动,rowDouble 本身不触发 edit 生命周期,也不会渲染 input 或聚焦。

  • 写了 table.on('rowDouble(id)', ...) 却没后续动作,等于监听了个寂寞
  • 试图在回调里手动 $td.find('input').focus():失败,因为默认状态下 td 里根本没有 input,只有纯文本 <div lay-unselect> <li>漏掉 <code>table.cache 查数据步骤,直接用 obj.tr 遍历 td 取值:列顺序一变或开了固定列就错
  • 正确做法:双击行 → 找到可编辑列 → 模拟一次 click

    核心是复用 Layui 内置编辑逻辑,而不是自己造 input。它稳定、兼容缓存更新、能触发 table.on('edit')。

    深蓝色网站后台管理系统layui框架模板-AdminPro
    深蓝色网站后台管理系统layui框架模板-AdminPro

    一款深蓝色网站后台管理系统layui框架模板

    下载
    • 确保目标列已配置 edit: 'text'(或其他类型),且未使用 templet
    • 在 rowDouble 回调中,用 $(obj.tr).find('td').eq(n) 定位第 n 列(比如用户名列),再找其内部的 div[lay-unselect]
    • 对该 div 调用 .click(),Layui 会识别并自动替换成 input、聚焦、绑定回车/失焦保存逻辑
    • 加 e.stopPropagation() 防止双击先触发一次单击(导致光标跳动或重复编辑)
    table.on('rowDouble(test)', function(obj){
      var $td = $(obj.tr).find('td').eq(1); // 假设第2列可编辑
      var $editDiv = $td.find('div[lay-unselect]');
      if ($editDiv.length) {
        $editDiv.click(); // 触发内置编辑流程
      }
    });

    移动端必须降级,别硬扛双击

    iOS Safari 和多数安卓 WebView 对 dblclick 支持极差:可能缩放页面、选中文字、或完全无响应。Chrome 模拟器测出来能用,真机上大概率失效。

    • 不要加 touch-action: manipulation 试图修复——它治标不治本,且和表格其他手势(如拖拽排序)冲突
    • 用 layui.device().mobile 检测,PC 端走 rowDouble,移动端统一改用操作列按钮(toolbar: '#bar')或长按事件
    • 如果坚持要“双击语义”,至少把移动端 fallback 到 click + 明确提示(比如 tooltip 写“点击编辑”)

    编辑完的数据在哪?别去原始 data 数组里翻

    用户改完内容、回车或失焦后,新值不会自动写回你初始化时传入的 data 数组,而是存在 table.cache['test'] 中,结构为 {'0': {...}, '1': {...}},key 是 data-index。

    • table.on('edit(test)', function(obj){ console.log(obj.value, obj.data); }) 是唯一可靠的数据出口
    • 提交前务必从 table.cache['test'][obj.dataIndex] 拿最新值,否则拿到的是旧快照
    • 服务端分页下,table.cache 只存当前页数据;前端分页才是全量,这点容易被忽略

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

layui

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2343

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5043

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6130

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5658

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

803

5

ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

2660

4

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

340

5

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.15

2473

5

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.24

1141

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.8万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习