layui框架中,表单元素不显示问题

  • 在layui框架中,动态生成的表单元素(如checkbox)需要重新渲染才能显示为layui风格的组件。
    在成功弹出层后,需要执行表单渲染,即使用 layui.form.render()。

注意:需要确保layui.form已经加载。

html 复制代码
<button class="layui-btn layui-btn-sm popBtn">弹窗事件</button>

$('.popBtn').click(function () {

    var html = '';
    html += '<div id="faceResultCon" class="faceResultCon">';
    html += '<form class="layui-form" action="">';
    html += '<div class="layui-form-item">';
    html += '<label class="layui-form-label">该候选人面试结果是:</label>';
    html += '<div class="layui-input-block">';
    html += '<input type="checkbox" name="face_checkbox" lay-filter="face_checkbox" title="通过面试" value="0" lay-skin="primary">';
    html += '<input type="checkbox" name="face_checkbox" lay-filter="face_checkbox" title="不合适" value="1">'; // 添加了value值
    html += '</div>';
    html += '</div>';

    html += '<div class="layui-form-item layui-form-text">';
    html += '<label class="layui-form-label">面试评价:</label>';
    html += '<div class="layui-input-block">';
    html += '<textarea placeholder="输入面试评价(非必填)" class="layui-textarea"></textarea>';
    html += '</div>';
    html += '</div>';
    html += '</form>';
    html += '</div>';

    layer.open({
        type: 1,
        title: '面试结果',
        content: html,
        area: ['500px', '280px'],
        btn: ['确认', '关闭'],
        btnAlign: 'c',
        success: function(layero, index) {
            // 关键:渲染表单元素
            layui.form.render();
            
            // 如果需要设置单选效果(二选一)
            layui.form.on('checkbox(face_checkbox)', function(data){
                // 当选择一个checkbox时,取消另一个的选择
                var checkboxes = layero.find('input[name="face_checkbox"]');
                checkboxes.each(function(){
                    if(this !== data.elem){
                        $(this).prop('checked', false);
                    }
                });
                layui.form.render('checkbox');
            });
        },
        yes: function(index, layero){
            // 确认按钮回调
            var form = layero.find('form');
            var checkedValue = form.find('input[name="face_checkbox"]:checked').val();
            var textareaValue = form.find('textarea').val();
            
            console.log('面试结果:', checkedValue);
            console.log('面试评价:', textareaValue);
            
            layer.close(index);
        },
        btn2: function(index, layero){
            // 关闭按钮回调
            layer.close(index);
        }
    });
});
相关推荐
jktantan4 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
前端·javascript·vue.js
总要学点什么4 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
2601_962885725 小时前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring
excel5 小时前
encodeURI 和 encodeURIComponent 有什么区别?
前端
前端精髓5 小时前
调用openrouter的免费API模型
java·前端·javascript
赛博守夜人6 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
开开心心_Every6 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
networknomad6 小时前
OpenReplay:自己搭的会话回放工具,给前端排错用的
前端·其他
缓慢更新7 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
陈随易8 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员