HTMX请求后如何正确重新初始化django-autocomplete-light
解决django-autocomplete-light与HTMX模态框重复渲染问题
在htmx.onLoad()函数中,需要先清理旧的autocomplete实例,再重新初始化新元素,具体代码如下:
htmx.onLoad(function(content) { // 销毁已存在的autocomplete实例,避免重复绑定 $('.your-autocomplete-selector').each(function() { var $this = $(this); if ($this.data('autocomplete')) { $this.data('autocomplete').destroy(); } }); // 在HTMX加载的新内容中重新初始化autocomplete元素 django.autocomplete.init(content); });
关键说明:
- 将
your-autocomplete-selector替换为你实际的多选颜色字段CSS选择器(比如#id_colors或.color-autocomplete) - 销毁旧实例是解决元素重复显示的核心步骤——HTMX重建模态框后,旧的autocomplete实例未被清除,新实例绑定后就会导致重复渲染
django.autocomplete.init(content)仅针对当前HTMX加载的模态框内容初始化,不会全局重复执行
如果你的多选字段使用select2风格的autocomplete,可改用以下兼容代码:
htmx.onLoad(function(content) { // 销毁旧的select2实例 $('.your-autocomplete-selector').each(function() { if ($(this).hasClass('select2-hidden-accessible')) { $(this).select2('destroy'); } }); // 重新初始化autocomplete django.autocomplete.init(content); });
内容的提问来源于stack exchange,提问作者Raphael
相关产品推荐
相关产品推荐

