【问题标题】:Clear select2 without triggering change event清除 select2 而不触发更改事件
【发布时间】: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/… 值得报告一个错误。

标签: jquery jquery-select2


【解决方案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。
  • 感谢大家的宝贵时间。感谢您的帮助。
猜你喜欢
  • 2013-04-10
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多