layui动态添加的表单元素显示异常

本文详细介绍了在使用layui框架时,动态添加radio元素后出现显示异常的问题及其解决方法。原因是layui会对表单元素进行二次渲染,动态添加的代码未经过再次渲染。解决策略是在动态添加元素后,调用form.render()方法手动触发渲染。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这种问题发生的原因:layui会对表单内的元素进行二次渲染,动态添加的代码没有经过再次渲染,所以显示异常。

官方文档其实也有提及这个问题和解决方法

https://www.layui.com/doc/modules/form.html#render

解决方法:动态添加元素后,使用form.render()手动触发渲染,如下代码所示:

layui.use(['form'], function () {
        var $ = layui.jquery,
            form = layui.form,
            table = layui.table;

        //监听radio选中事件,与本文无关
        form.on('radio(test)', function (obj) {
            //动态添加元素
            addThing(obj.value)
            //执行渲染
            form.render('radio')
        });
    });

另外附上layui动态添加radio元素的方法:

 function addThing(radioGroup, data) {
        radioGroup[0].innerHTML = ""
        if (data.length == 0) return;

        var tt = "<input type=\"radio\" name=\"thing\" value=\""+data[0].tname+"\" title=\""+data[0].tname+"\" checked=\"\"><div class=\"layui-unselect layui-form-radio layui-form-radioed\"><i class=\"layui-anim layui-icon\">&#xe643</i><div>"+data[0].tname+"</div></div>"
        radioGroup[0].innerHTML += tt
        for (var i = 1; i < data.length; i++) {
            var temp = data[i].tname
            tt = "<input type=\"radio\" name=\"thing\" value=\""+data[i].tname+"\" title=\""+data[i].tname+"\"><div class=\"layui-unselect layui-form-radio\"><i class=\"layui-anim layui-icon\">&#xe63f</i><div>"+data[i].tname+"</div></div>";
            radioGroup[0].innerHTML += tt
        }
    }

 

### 解决 Layui 中 `layui-nav-bar` 多层级菜单显示不正常的问题 对于 Layui 的多层导航栏 (`layui-nav`) 下拉菜单显示异常的情况,确保所有必要的模块被正确加载至关重要。具体来说,由于导航功能依赖于 Element 模块,因此需要确认该模块已被成功引入并初始化[^1]。 #### HTML 结构调整 为了使多级菜单能够按照预期工作,在定义导航条目的时候应遵循特定结构: ```html <ul class="layui-nav"> <li class="layui-nav-item"> <a href="javascript:;">父级菜单</a> <dl class="layui-nav-child"> <!-- 子级菜单 --> <dd><a href="">子项一</a></dd> <dd><a href="">子项二</a></dd> <dd> <a href="javascript:;">更多选项...</a> <dl class="layui-nav-child"> <!-- 更深层次的子菜单 --> <dd><a href="">深层子项A</a></dd> <dd><a href="">深层子项B</a></dd> </dl> </dd> </dl> </li> </ul> ``` #### JavaScript 初始化配置 紧随上述HTML片段之后的位置添加如下脚本段落来完成Element组件实例化过程: ```javascript <script> layui.use('element', function(){ var element = layui.element; }); </script> ``` 此部分代码的作用在于激活页面上的所有基于Element构建的功能部件,包括但不限于导航栏及其关联特性如展开/收起行为等。 另外需要注意的是,当涉及表单元素或其他交互式控件时,可能还需要额外引入相应的Form模块以支持这些组件所需的事件监听器和其他辅助函数[^3]。 通过以上方法可以有效解决Layui中多层次导航栏项目未能按计划呈现的问题,并确保其具备良好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值