You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:52:04