layui的select/checkbox/radio没显示?

本文介绍了一个关于layui框架中登录页面单选按钮不显示的问题及解决方案。当使用layui的表单组件时,原始的select、checkbox、radio等元素会被隐藏并进行美化处理,这需要依赖于form组件。如果遇到单选按钮不显示的情况,确保已加载form模块并执行实例。文章还提到,为了精简layui,删除了lay/modules文件夹,但这样做会导致单选框无法显示,重新加入该文件夹后问题得以解决。

用layui写的一个登录页面,然而单选按钮不显示。google查了一下,下面是官网给出的答案:

当你使用表单时,Layui会对select、checkbox、radio等原始元素隐藏,从而进行美化修饰处理。但这需要依赖于form组件,所以你必须加载 form,并且执行一个实例。值得注意的是:导航的Hover效果、Tab选项卡等同理(它们需依赖 element 模块)

解决:当初我为了layui精简,删除了layui的 lay/modules文件夹,现在加上单选框就显示了。

 

Layui 中动态设置 `checkbox` 的选中状态,需要通过 **Layui 的表单模块**重新渲染,否则直接修改 DOM 或通过 jQuery 操作可能会生效。以下是具体方法和示例: --- ### 方法步骤: 1. **获取或设置 `checkbox` 的 `checked` 属性** 使用 jQuery 或原生 JS 修改 `input[type="checkbox"]` 的 `checked` 状态。 2. **调用 `layui.form.render()` 重新渲染** Layui 的表单元素(如 `checkbox`、`radio`、`select`)需要手动触发渲染才能更新样式和状态。 --- ### 示例代码: #### 1. 动态设置选中状态 ```javascript // 通过 jQuery 设置 checkbox 为选中状态 $('#myCheckbox').prop('checked', true); // 通过原生 JS 设置 document.getElementById('myCheckbox').checked = true; // 调用 Layui 重新渲染表单 layui.form.render('checkbox'); // 参数 'checkbox' 表示只渲染复选框 ``` #### 2. 动态生成复选框后渲染 如果是通过 AJAX 或动态插入的 `checkbox`,需要在插入 DOM 后渲染: ```javascript // 动态添加 checkbox 到页面 $('#container').html('<input type="checkbox" id="newCheckbox" lay-skin="primary">'); // 重新渲染表单 layui.form.render('checkbox'); ``` #### 3. 结合 Layui 的 `form.on()` 监听事件 如果需要监听复选框的变化,使用 Layui 的事件绑定: ```javascript layui.form.on('checkbox(myFilter)', function(data) { console.log(data.elem.checked); // 获取当前选中状态 }); ``` 对应的 HTML 需添加 `lay-filter`: ```html <input type="checkbox" id="myCheckbox" lay-filter="myFilter" lay-skin="primary"> ``` --- ### 注意事项: 1. **必须调用 `layui.form.render()`** Layui 的表单样式和状态是动态生成的,直接修改 DOM 后需重新渲染。 2. **避免混用 jQuery 和 Layui 的 API** 如果页面已引入 jQuery,可以用 `$('#id').prop('checked', true)`,但最终仍需调用 `layui.form.render()`。 3. **性能优化** 如果页面有大量表单元素,可以指定渲染类型(如 `'checkbox'`、`'select'`)减少必要的渲染。 --- ### 完整示例: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Layui 动态设置 Checkbox</title> <link rel="stylesheet" href="//unpkg.com/layui@2.6.8/dist/css/layui.css"> </head> <body> <div class="layui-form"> <input type="checkbox" id="testCheckbox" lay-skin="primary" title="动态复选框"> <button class="layui-btn" onclick="setChecked()">设为选中</button> </div> <script src="//unpkg.com/layui@2.6.8/dist/layui.js"></script> <script> layui.use(['form', 'jquery'], function() { var form = layui.form; var $ = layui.jquery; // 初始化渲染 form.render(); // 动态设置选中状态 window.setChecked = function() { $('#testCheckbox').prop('checked', true); form.render('checkbox'); // 重新渲染 }; }); </script> </body> </html> ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值