必须配置 edit 字段才能启用单元格编辑,仅绑定 click 或 dblclick 无效;edit 值决定输入类型(如 'text'、'number'、'select'),且不可与 templet 共存;移动端建议设 event: 'click' 并确保 viewport 设置正确;编辑后数据存于 table.cache 中,需手动同步至服务端。
edit 才能点开输入框,光绑 click 没用表格单元格默认是只读的,哪怕你给 td 绑了 click 或 dblclick,也改不了内容——因为 layui 底层根本没渲染输入控件。真正触发编辑行为的,是列配置里的 edit 字段。
edit: 'text':普通文本输入(最常用)edit: 'number':带数字校验和上下箭头,适合数值型字段edit: 'select':只生成空 <select>,选项得自己塞,且 table.on('edit') 对它不生效别写 edit: 'textarea',Layui 不认这个值,会静默失败;要多行编辑,得用函数返回带 class="layui-textarea" 的 <textarea>。
edit 和 templet 不能共存一旦某列用了 templet(比如加图标、按钮或格式化显示),edit 就会被忽略。Layui 把渲染权交给你了,就不会再接管编辑逻辑。
templet,直接在 CSS 里控制 td[data-field="price"] { text-align: right; }
templet 里手动插入 <input> 或 <select>,再调 form.render(),并监听失焦/回车自己更新 table.cache
event: 'click'
默认双击才能进编辑态,但在 iOS Safari 和不少安卓 WebView 里,双击常被识别为缩放或文字选择,根本进不去输入框。
{ field: 'price', title: '价格', edit: 'number', event: 'click' }
layui.device() 判断后动态设置列配置<meta name="viewport">,否则 click 可能延迟 300msdata 数组里,得查 table.cache
编辑只是更新 DOM 和临时缓存,原始传入的 data 数组完全不变。翻页、重载后,你改过的值就丢了。
table.cache['your-filter-id'] 里,key 是你在 table.render() 中设的 id 或元素的 lay-id
table.cache['priceTable'][rowIndex].price = newValue
table.on('edit(filter)', callback) 里主动发请求保存,Layui 不自动同步容易漏掉的是:编辑完没清空 input 的 focus 状态,或者没处理回车/失焦时的校验,导致用户以为改成功了,其实没发出去。