textarea必填验证必须用lay-verify="required",且lay-reqtext仅在此时生效;属性须写在textarea标签内,name不可省略,富文本需同步内容,动态添加需调form.render('textarea')。

textarea 必填验证必须用 lay-verify="required"
直接写 required 属性没用——Layui 完全不读原生 required,只认 lay-verify="required"。这个属性必须加在 <textarea></textarea> 标签上,不是外层 <div class="layui-input-block">,也不是 <code><label></label>。
-
lay-verify="required"是唯一触发必填校验的方式,其他写法(如required="required")纯属无效 - 如果用了
lay-verify="required|email"这类多规则,空值时只报“必填”提示,email规则根本不会执行 - textarea 的
name属性不能省,Layui 验证靠它定位字段,没name就等于没注册
lay-reqtext 自定义提示文字怎么生效
lay-reqtext 只对 lay-verify="required" 生效,且必须写在 <textarea></textarea> 标签里,写在别的地方全白搭。
- 正确写法:
<textarea name="desc" lay-verify="required" lay-reqtext="简介不能为空"></textarea> - 错误写法:
<label lay-reqtext="..."></label>、<div data-lay-reqtext="...">、<code><textarea data-lay-reqtext="..."></textarea>—— 全部失效 - 如果用了富文本编辑器(
layedit),得先调layedit.sync(index)同步内容,否则验证的是空字符串,lay-reqtext提示照样弹出来 - 插入 DOM 后必须立刻调用
form.render('textarea'),不能只写form.render()(会重载全部组件,可能破坏 radio 或 select 状态) - 如果同时有 input、select、textarea 要渲染,可以分步调:
form.render('input')、form.render('select')、form.render('textarea') - 别在
form.render()之后再补lay-reqtext属性——得在插入前就带好所有属性,或者插入后立即 set + render - 解决办法:改用自定义规则,比如
form.verify({ notEmpty: function(value) { return value.trim() ? true : '此项不能为空'; } }),然后lay-verify="notEmpty" - 别在自定义规则里写
return true,Layui 只把false或字符串当失败;return undefined或return true都算通过 - 如果 textarea 套了富文本,又忘了调
layedit.sync(),验证的永远是初始空值,不是编辑器里的真实内容
动态插入的 textarea 怎么让验证生效
Ajax 加载后追加的 <textarea></textarea>,即使写了 lay-verify="required",提交时也不校验——Layui 初始化时没扫描到它。
为什么输入了内容还提示“未填写”
常见原因是值为空格或换行符,required 规则默认不做 .trim(),只要字符串非空就放过,但用户感知是“明明输了却报错”。
lay-reqtext 和自定义规则都作用于同步前的 textarea 值,不是编辑器实时内容。同步动作必须在验证触发前完成,而 Layui 默认的验证时机(submit 时)并不自动包含这步。











