本文详解layui框架中动态生成checkbox控件后不显示或默认选中失效的问题。核心解决方案包括调用layui.form.render()重新渲染页面,以及在layui.use初始化块中区分使用attr()判断和prop()设置选中状态,确保动态内容正确交互。
layui动态控件初始化问题概述
近期在使用layui前端框架时,处理单选按钮、下拉菜单select以及checkbox等表单控件,常会遇到初始化的相关困扰。
有时会发现,通过动态append插入的代码要么无法显示,要么初始化默认选中的状态会出现异常。
针对上述情况,进行了相关测试与验证:
动态添加html后控件不显示的解决
第一种情况:动态append()插入html代码后控件不显示的解决方案:
添加
layui.form.render();//重新渲染 可以解决多种没有显示的情况
动态设置checkbox选中状态的两种场景
第二种情况:动态设置默认选中状态无效时的解决方案:
该问题细分为两种具体场景:
非layui.use初始化块中的处理
(1)在html页面代码中(未包含在layui.use([], function(){ })初始化框架内,即未进行常规初始化)
以初始化checkbox默认选中为例:
$('.xxx').attr("checked", true); //注意这里使用的是attr()
layui.form.render(); //重新渲染显示效果
layui.use初始化块中的状态处理
(2)在layui.use(); 初始化块中处理这种情况,通常出现在调用api接口报错后,需要改变checkbox的状态。
layui.use(['form','layer'],function(){
var form = layui.form
layer = parent.layer === undefined ? layui.layer : top.layer,
$ = layui.jquery;
if ($('.xxxx').attr("checked") === "checked") { //判断是否选中
$('.xxxx').prop("checked", true); //设置选中 注意这里使用的是prop(), 这里要是使用了attr()是无效的
} else {
$('.xxxx').prop("checked", false);
}
form.render(); //重新渲染
});
以上关于layui动态设置checkbox选中状态的示例内容分享完毕,希望能提供有效参考,也希望大家多多支持本站。