Layui radio 必填需显式加 lay-verify="required",且同 name 组 name 必须完全一致、每个 value 非空,动态操作后须调用 form.render('radio')。
Layui 不会自动把同 name 的 radio 组识别为必填项,哪怕你写了 * 星号或用了 HTML5 的 required 属性,它都完全不认。验证逻辑只响应 lay-verify 属性。
实操建议:
<input type="radio"> 加上 lay-verify="required",Layui 就会关联整组校验required、required="" 或 required="true" —— 这些是原生属性,form 模块压根不读form.render('radio'),否则 lay-verify 不生效表单提交时提示“未选择”,但明明点了,大概率是 name 不统一。Layui 验证靠 name 分组,一旦出现 sex、Sex、 sex 这类差异,整组就被当成多个独立字段,验证直接跳过。
实操建议:
name 字符串逐字相同即使 name 和 lay-verify 都对了,如果某个 radio 的 value="",Layui 会把它当作“未选中”处理,提交时照样报错。
实操建议:
value 必须是非空字符串,例如 value="1"、value="male"、value="on"
或仅换行符充当 valueconsole.log(form.val('yourFormFilter')),确认返回值不是 undefined 或空串用 JS 设置 checked 属性或修改 DOM 后,Layui 的 UI 状态不会自动同步,导致视觉已选中但验证仍报“未选择”。
实操建议:
checked 后,立刻调用 form.render('radio')
form.on('submit') 里做判断,记得先取值再验证,别依赖 DOM 的 checked 属性(它可能被 Layui 覆盖)form.val('filter', {sex: 'male'}) 设置值更可靠,它会自动触发渲染和状态更新