Select2“更改”事件不会触发 htmx

Posted

技术标签:

【中文标题】Select2“更改”事件不会触发 htmx【英文标题】:Select2 "change" event does not trigger htmx 【发布时间】:2021-04-15 21:33:31 【问题描述】:

这是我想要的方式:如果<select> 被更改,那么htmx 被触发。

<script src="https://unpkg.com/htmx.org@1.1.0"></script>

<table>
 <tr hx-post="//example.com" hx-trigger="change">
  <td>
    <select name="runner">
     <option value="a">a</option>
     <option value="b">b</option>
    </select>
  </td>
 </tr>
</table>

如果我使用 django-autocomplete-light 小部件,则它不起作用。

我使用这个版本:django-autocomplete-light==3.8.1

【问题讨论】:

你能添加“select”作为hx-trigger以及改变吗? 【参考方案1】:

刚刚遇到同样的问题,并使用以下 guettli 答案的修改版本修复它。

window.addEventListener("DOMContentLoaded", (e) => 
    $('select').on('select2:select', function (e) 
        $(this).closest('select').get(0).dispatchEvent(new Event('change'));
    );
);

【讨论】:

【参考方案2】:

如果我添加这个 JS,那么它就可以工作。欢迎提供更好的解决方案。

<script>
 window.addEventListener("DOMContentLoaded", (e) => 
  $('select').on('select2:select', function (e) 
   $(this).closest('tr').get(0).dispatchEvent(new Event('change'));
);
 )
</script>

【讨论】:

以上是关于Select2“更改”事件不会触发 htmx的主要内容,如果未能解决你的问题,请参考以下文章

使用 Select2 而不是实际选择时不会触发 WooCommerce 事件

清除 select2 而不触发更改事件

动态 select2 不触发更改事件

VueJS Select2 指令不会触发 @change 事件

Select2 不会在更改/选择第一个选项时触发

select2 和表单更改事件