Layui textarea无法动态增减数量,需用原生JS操作DOM:新增需创建带class="layui-textarea"和lay-auto的节点并挂载后调用form.render('textarea');删除须彻底移除节点及lay-verify属性,避免verify误校验;推荐用数据数组驱动模板渲染以提升性能。
很多人搜“layui文本域动态增加数量”,其实是想实现「点击按钮新增一个 textarea 输入框」或「删掉某个已存在的」。Layui 本身不提供 textarea 批量管理组件,它只渲染单个表单元素。所谓“动态增减”,本质是用原生 JS 操作 DOM:
<textarea class="layui-textarea"></textarea>,插入到目标容器中element.remove() 或 parentNode.removeChild() 移除对应节点form.render('textarea') 来“刷新”一堆 textarea——这个方法只对初始化时已存在的、带 lay-verifiy 的原始 textarea 生效,对后来 JS 插入的无效lay-verify="required" 等属性,并在提交前调用 form.verify(),否则 layui 不会管它Layui 的 textarea 样式(圆角、边框、自适应高度)不是靠 CSS 类自动生效的,而是由 form.render() 注入内联样式和事件。但注意:
textarea 必须有 class="layui-textarea",否则 form.render('textarea') 不会识别它form.render('textarea'),否则无效果lay-auto)需额外加属性:<textarea class="layui-textarea" lay-auto></textarea>,仅加 class 不够form.on('submit(...)'),新增的 textarea 的 name 必须唯一,否则提交时同名字段会被覆盖因为 form.verify() 默认遍历所有带 lay-verify 的表单元素,不管它是否还在 DOM 里——只要没被移除属性或销毁实例,就仍会被扫到。常见陷阱:
removeChild() 删除节点,但忘了清除它的 lay-verify 属性,下次 submit 仍报错name,导致 form.val() 只取最后一个的值,且 verify 逻辑混乱let textareas = [] 维护列表),删 DOM 后数组未同步,后续操作越界form.on('checkbox') 或其他监听,记得在删除前用 elem.off() 解绑,避免内存泄漏频繁增删节点容易引发 layout thrashing 和事件丢失。尤其在小屏设备上,反复触发 form.render() 可能卡顿。推荐做法是:
let textareaItems = [{id: 1, value: '', required: true}, ...]
form.render('textarea')
id 或 data-id 绑定唯一标识,方便后续取值或删除tlwdr7650路由器没有wps按钮(tlwdr7650路由器没有wps按钮怎么办)
tlwdr7632扩展器电脑怎么设置(tlwdr7632扩展器电脑设置方法)
tlwda6332re安装教程(tlwda6332re如何安装)
tlwdr7632扩展器手机怎么设置(tlwdr7632扩展器手机设置方法)
tlxdr3010怎么设置网速快(tlxdr3010网速快设置方法)
tlwdr5620易展版怎么克隆(tlwdr5620易展版克隆方法)