一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

layui单选框如何根据数据库返回的值选中

时间:2026-08-24 12:20:50 编辑:袖梨 来源:一聚教程网

Layui 表单控件默认不响应原生 checked 或 val() 赋值,必须通过数据驱动或渲染后干预:radio 需手动设 prop('checked', true) + form.render('radio');table radio 需 templet 判断字段值并输出 checked;select 的 value="0" 需先设 selected 属性再 render。

直接靠 checked 属性或 val() 赋值基本无效——Layui 会接管 DOM 并清掉原生状态,必须走它认可的数据驱动或渲染后干预路径。

表单内独立 radio 组:用 form.render('radio') + 手动设 checked

后端返回的是数字(如 gender: 1)或字符串(如 status: "active"),不能直接写 checked 在 HTML 里,因为 Layui 初始化时会抹掉这个属性。

  1. 先确保 HTML 中每个 input[type="radio"] 都有明确的 namevalue,比如:<input type="radio" name="gender" value="1" title="男">
  2. 拿到后端数据后,用 jQuery 定位匹配项并设 prop('checked', true)$('input[name="gender"][value="' + data.gender + '"]').prop('checked', true)
  3. 必须紧接着调用 form.render('radio'),否则 UI 不同步;如果用了 lay-filter,建议传第二个参数:form.render('radio', 'myFormFilter')
  4. 注意类型对齐:后端返回数字 0,但 DOM 中 value 是字符串 "0",比较前最好统一转成字符串或用严格相等 ===

Layui table 表格里的单选列:靠数据字段 + templet 渲染

表格里的 radio 不是普通表单控件,Layui 会自动管理 click 逻辑,但默认不响应数据里的 checked 字段——必须在列定义里用 templet 函数输出带状态的标签。

  1. 列配置必须含 type: 'radio',且整个 cols 中只能有一列是它
  2. templet 函数里判断字段值,比如后端返回 is_default: 1,就写:(d.is_default === 1 ? ' checked' : '')
  3. value 必须有且唯一,通常用 d.idd.row_id,别漏掉
  4. 不要在原始数据里写 checked: true,Layui table 的 radio 模式不认这个字段;初始化默认选中只能靠提前塞 is_default: 1 进 data 数组

select 下拉框里 value="0" 选项无法默认选中

这不是 JS 没执行,而是 Layui 渲染时主动跳过了 value="0" 和空字符串的 option——它把 "0" 当成了 falsy 值过滤掉。

  1. 不能只用 $('#sel').val(0),得先手动设置 selected 属性:$('#sel').find('option[value="0"]').prop('selected', true)
  2. 再调 form.render('select') 触发重绘;如果 select 有 lay-filter,建议传第二个参数避免全局刷新
  3. 确保 HTML 中 optionvalue 是带引号的字符串:<option value="0">未分类</option>,而不是 <option value=0>
  4. 动态加载 option 时,必须等 append() 完成后再操作,否则 find('option[value="0"]') 找不到节点

真正卡住人的从来不是“怎么写代码”,而是 value="0"、数字 0、字符串 "0"、undefined、空字符串在 HTML 解析、jQuery 匹配、Layui 渲染三层里被当成不同东西处理——每一层都得对齐类型和存在性。

热门栏目