使用select2 4.0进行选择时触发回调,并检索上次选择的值

时间:2015-03-31 18:44:04

标签: jquery jquery-select2 jquery-select2-4

我使用的是最新版本的Select2(4.0),无法找到如何在进行选择时触发事件,并检索最后选择的值(当使用可以进行多项选择的选择框时)

在旧版本的Select2中,如果我没记错的话,选择时附加插件的选择的“onchange”事件会在选择时触发,但这不适用于该事件。

当选择框选项发生变化时,我设法触发了一个javascript函数,但还是无法找出最后选择的id。我是这样做的:

jQuery("#select2_holder").on("change", function(e) { 
        console.log(arguments);
});

我也尝试记录参数,但我也找不到所需的信息。

我已阅读官方网站上的文档,但我找不到任何关于回调函数的信息。

这里有人能指出我正确的方向吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

Select2提供select2:select事件,只要选择了新值,就会触发该事件。对于单个选择,这相当于change,其中包含一些额外的元数据。

您可以使用evt.data获取所选数据对象,其中evt是传递给事件处理程序的第一个参数。

jQuery("#select2_holder").on("select2:select", function (evt) {
  console.log(evt.data);
});

您可以找到事件in the Select2 examples的实时示例。


  

在旧版本的Select2中,如果我没记错的话," onchange"在做出选择时,插件附加到的选项的事件被触发,这不会对该事件起作用。

这是正确的,在Select2 3.x中我们用来修改标准change事件并在其上添加一些额外的属性。由于(不幸的是)这种情况从不一致,并且在人们想要手动触发change时导致问题,我们不会修改Select2 4.0中的标准change事件。

答案 1 :(得分:0)

上一个例子很好,但有一个错误: 需要使用select2:selecting代替select2:select

所以我们有

jQuery("#select2_holder").on("select2:selecting", function (evt) {
  console.log(evt);
});