清除 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 而不触发更改事件的主要内容,如果未能解决你的问题,请参考以下文章