Layui单选框需用layui.jquery模拟点击并调form.render('radio','filter')或form.val('filter',{name:'val'}),禁用全局$避免冲突,动态添加须先插入DOM再渲染。
直接用$("input[name='gender'][value='1']").attr("checked", true)没反应,不是jQuery写错了,是Layui把原生input[type=radio]隐藏了,UI显示的是它生成的div.layui-form-radio结构,DOM改了但Layui渲染层根本没感知。
常见错误现象:控制台能看到checked="checked"属性加进去了,页面上还是默认项;或者点了别的选项后,刚设的值又被覆盖。
form.render('radio'),只写form.render()可能不生效(尤其页面有多个表单类型时)form模块已加载完成,别在layui.use(['form'], callback)外部执行Layui的radio渲染和状态是解耦的:DOM变更 → 渲染更新 → UI同步。跳过任何一步都会“看起来设了,实际没变”。
layui.jquery(不是全局$)定位并模拟点击:layui.jquery("input[name='gender'][value='1']").next().click()
form.render('radio', 'your-filter'),第二个参数是lay-filter值,必须和HTML中lay-filter="genderForm"严格一致form.val('genderForm', {gender: '1'}),而不是手动点注意:form.val()只对已渲染过的元素有效——如果form.render('radio', ...)没跑成功,form.val()会静默失败,DOM里值变了但UI不动。
如果你页面同时引入了外部jQuery(比如jquery-3.7.1.min.js),再用$操作,大概率触发Layui与jQuery版本冲突,导致form.render()内部逻辑异常(例如$.extend行为变化、事件委托失效)。
input旁是否有div.layui-form-radio,没有说明form.render()根本没执行或失败layui.form,返回对象存在才说明模块加载成功;再执行layui.form.val('your-filter')看返回值是否是你设的值layui.jquery,避免混用;或者干脆删掉外部jQuery,只用Layui自带的1.12.4版本AJAX回来的数据填完radio,用户点不了——不是事件丢失,是Layui没把新插入的DOM纳入管理范围。
典型场景:表单初始为空,JS动态追加了input[type=radio],然后调form.render('radio'),但依然不生效。
input标签带name且和已有radio同名(Layui靠name分组)form.render()之前,顺序不能反innerHTML拼字符串插入,务必确保name、value、lay-filter都完整,缺一不可复杂点在于:Layui不监听DOM变动,它只认自己初始化时解析过的结构。动态加的元素,必须显式告诉它“这里有新radio”,否则永远是哑的。
tlwdr7650路由器没有wps按钮(tlwdr7650路由器没有wps按钮怎么办)
tlwdr7632扩展器电脑怎么设置(tlwdr7632扩展器电脑设置方法)
tlwda6332re安装教程(tlwda6332re如何安装)
tlwdr7632扩展器手机怎么设置(tlwdr7632扩展器手机设置方法)
tlxdr3010怎么设置网速快(tlxdr3010网速快设置方法)
tlwdr5620易展版怎么克隆(tlwdr5620易展版克隆方法)