解决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>
暂无评论数据