最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
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 初始化时会抹掉这个属性。
- 先确保 HTML 中每个
input[type="radio"]都有明确的name和value,比如:<input type="radio" name="gender" value="1" title="男"> - 拿到后端数据后,用 jQuery 定位匹配项并设
prop('checked', true):$('input[name="gender"][value="' + data.gender + '"]').prop('checked', true) - 必须紧接着调用
form.render('radio'),否则 UI 不同步;如果用了lay-filter,建议传第二个参数:form.render('radio', 'myFormFilter') - 注意类型对齐:后端返回数字
0,但 DOM 中value是字符串"0",比较前最好统一转成字符串或用严格相等===
Layui table 表格里的单选列:靠数据字段 + templet 渲染
表格里的 radio 不是普通表单控件,Layui 会自动管理 click 逻辑,但默认不响应数据里的 checked 字段——必须在列定义里用 templet 函数输出带状态的标签。
- 列配置必须含
type: 'radio',且整个cols中只能有一列是它 - 在
templet函数里判断字段值,比如后端返回is_default: 1,就写:(d.is_default === 1 ? ' checked' : '') -
value必须有且唯一,通常用d.id或d.row_id,别漏掉 - 不要在原始数据里写
checked: true,Layui table 的 radio 模式不认这个字段;初始化默认选中只能靠提前塞is_default: 1进 data 数组
select 下拉框里 value="0" 选项无法默认选中
这不是 JS 没执行,而是 Layui 渲染时主动跳过了 value="0" 和空字符串的 option——它把 "0" 当成了 falsy 值过滤掉。
- 不能只用
$('#sel').val(0),得先手动设置selected属性:$('#sel').find('option[value="0"]').prop('selected', true) - 再调
form.render('select')触发重绘;如果 select 有lay-filter,建议传第二个参数避免全局刷新 - 确保 HTML 中
option的value是带引号的字符串:<option value="0">未分类</option>,而不是<option value=0> - 动态加载 option 时,必须等
append()完成后再操作,否则find('option[value="0"]')找不到节点
真正卡住人的从来不是“怎么写代码”,而是 value="0"、数字 0、字符串 "0"、undefined、空字符串在 HTML 解析、jQuery 匹配、Layui 渲染三层里被当成不同东西处理——每一层都得对齐类型和存在性。
相关文章
- 小米路由器放大器一直闪黄灯怎么回事(小米路由器放大器一直闪黄灯原因是什么) 08-24
- Microsoft Office 2010完整版Word如何插入剪贴画 08-24
- 小米路由器放大器pro怎么设置(小米路由器放大器pro设置方法) 08-24
- 钟祥论坛如何查询住房公积金提取流程 08-24
- 天正暖通网页版在哪找 08-24
- 粉笔公考官网首页入口在哪 08-24