layui单选框如何设置必选才能提交

作者:袖梨 2026-08-11

Layui radio 必填需显式加 lay-verify="required",且同 name 组 name 必须完全一致、每个 value 非空,动态操作后须调用 form.render('radio')。

lay-verify="required" 必须显式加在 radio 上

Layui 不会自动把同 name 的 radio 组识别为必填项,哪怕你写了 * 星号或用了 HTML5 的 required 属性,它都完全不认。验证逻辑只响应 lay-verify 属性。

实操建议:

  1. 只需给同组任意一个 <input type="radio"> 加上 lay-verify="required",Layui 就会关联整组校验
  2. 别写成 requiredrequired=""required="true" —— 这些是原生属性,form 模块压根不读
  3. 如果用 JS 动态插入 radio,插入后必须调用 form.render('radio'),否则 lay-verify 不生效

name 值必须完全一致,大小写和空格都不能错

表单提交时提示“未选择”,但明明点了,大概率是 name 不统一。Layui 验证靠 name 分组,一旦出现 sexSex sex 这类差异,整组就被当成多个独立字段,验证直接跳过。

实操建议:

  1. 用浏览器开发者工具检查真实渲染出的 DOM,确认所有同组 radio 的 name 字符串逐字相同
  2. 不要依赖 JS 拼接或模板引擎变量注入 name,初始化时就写死、写准
  3. 后端接收字段名也得严格对应这个 name,避免前后端字段对不上

value 不能为空字符串

即使 namelay-verify 都对了,如果某个 radio 的 value="",Layui 会把它当作“未选中”处理,提交时照样报错。

实操建议:

  1. 每个 radio 的 value 必须是非空字符串,例如 value="1"value="male"value="on"
  2. 避免用空格、 或仅换行符充当 value
  3. 调试时执行 console.log(form.val('yourFormFilter')),确认返回值不是 undefined 或空串

动态设置默认选中后,必须重新渲染 radio

用 JS 设置 checked 属性或修改 DOM 后,Layui 的 UI 状态不会自动同步,导致视觉已选中但验证仍报“未选择”。

实操建议:

  1. 手动设 checked 后,立刻调用 form.render('radio')
  2. 如果是在 form.on('submit') 里做判断,记得先取值再验证,别依赖 DOM 的 checked 属性(它可能被 Layui 覆盖)
  3. form.val('filter', {sex: 'male'}) 设置值更可靠,它会自动触发渲染和状态更新
表单验证的“必选”逻辑其实很薄,就卡在三个点:属性写对、name 对齐、value 有值。最容易漏的是 value 为空,因为 DOM 看起来点上了,控制台也看不出异常,但 form.val() 一取就是空。

相关文章

精彩推荐