解决layui弹出层不能渲染MdelForm选择框
最近遇到一个问题,ModelForm的表单使用layui弹出层组件渲染时,表单选择框不能正常显示,且不能进行选择,经过研究发现,是由于 layui 的样式冲突或者事件绑定问题所致。可以在弹出层显示后手动触发 layui 的渲染来解决这个问题,将 layui 的 form.render() 方法添加到您的弹出层代码中。
- 首先创建好ModelForm表单
class Users(ModelForm):
"""表单"""
class Meta:
model = Users
fields = ['name', 'email', 'phone'...]
}
前端代码
<script> var form_html = ` <form class="layui-form" style="margin: 20px;"> <div class="layui-form-item"> <div class="layui-input-wrap "> {% csrf_token %} {{ form }} </div> <div class="layui-input-wrap layui-right" style="margin-top: 20px;margin-right: 20px;"> <button type="reset" class="layui-btn layui-btn-primary">重置</button> <button class="layui-btn layui-btn-normal" lay-submit="add_btn" lay-filter="edit_btn" id="add_btn">立即提交</button> </div> </div> </form> `; layer.open({ type: 1, area: ['500px', '300px'], title: '表单', shade: 0.6, shadeClose: true, maxmin: true, anim: 0, content: form_html, success: function (layero, index) { layui.use('form', function(){ var form = layui.form; form.render(); // 注意这里,需要手动触发 layui 渲染,因为目前的的弹出层和渲染冲突了。 }); } }); // 监听表单提交事件 $(document).on('submit', 'form.layui-form', function(e){ e.preventDefault(); // 阻止表单默认提交行为 var formData = $(this).serialize(); // 获取表单数据 $.ajax({ url: '', type: 'POST', data: formData, success: function(res){ // 处理成功响应的逻辑 ... }, error: function(xhr, status, error){ // 处理错误响应的逻辑 ... console.error(error); } }); }); </script>
暂无评论数据