清除 select2 而不触发更改事件

Posted

技术标签:

【中文标题】清除 select2 而不触发更改事件【英文标题】:Clear select2 without triggering change event 【发布时间】:2013-07-23 02:02:04 【问题描述】:

我有一个正在使用的 select2 输入,在“更改”时,我正在获取值并执行操作。我试图在不触发更改事件的情况下清除该 select2 。这可能吗?

要清除 select2,我使用以下代码:

$docInput.select2('data', null);

这会根据需要清除输入,但也会触发贯穿我的其他代码的更改事件。必须有一种方法可以使触发器静音。有什么想法吗?

【问题讨论】:

您可以在 onchange 事件中进行测试,并确保输入不为空,然后再执行您在该函数中执行的操作。 你能提供jsfiddle你目前拥有的东西吗? AFAIK .select2('data', null) 不会触发任何事件。 @FabrícioMatté 为发生变化的 Ryan 制作了 demo。 @MikeFielden 你说得对,你需要显式传递false github.com/ivaynberg/select2/blob/… 值得报告一个错误。 【参考方案1】:

您可以在 Select2 4.x 中使用以下内容

$docInput.val(null).trigger('change.select2');

【讨论】:

这是你能找到的唯一方法吗? 这是有效的,因为它专门用 Select2 正在寻找的命名空间 (.select2) 触发 change 事件,因此不会触发其他事件处理程序。这个命名空间可能在未来发生变化,但不太可能发生。 这是唯一不触发原始 这为我节省了一些时间!谢谢:) $('.select_auto').on('select2:selecting', function(e) 当触发改变时,上面的函数应该被触发,但它不是。我改变选择改变但仍然不工作【参考方案2】:

我相信你只需要:

$docInput.select2('data', null, false);

【讨论】:

是的,这应该作为临时修复,我将在今天晚些时候打开一个问题/PR。 感谢大家的宝贵时间。感谢您的帮助。

以上是关于清除 select2 而不触发更改事件的主要内容,如果未能解决你的问题,请参考以下文章

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

Select2 自动触发事件变化

select2 和表单更改事件

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

在select2的下拉打开时禁用自动对焦?

如何重置/清除 x-editable 表中的所有过滤器(select2、select、input)?