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

Fire callback when selection was made with select2 4.0, and retrieve the value of last selection

我正在使用最新版本的 Select2 (4.0),无法找到如何在生成 selection 时触发事件并检索最后的 selected 值(当使用 select 盒子时,多个 select 离子是可能的)。

在旧版本的 Select2 中,如果我没记错的话,select 的 select 事件是在创建 selection 时触发的,这不会现在在工作。

当 select 框 selection 发生变化时,我设法触发了一个 javascript 函数,但还不能确定最后一个 selected id .这是我的做法:

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

我也试过记录参数,但我也找不到想要的信息。

官网的文档我都看了,但是里面没有关于回调函数的内容。

这里有人可以为我指明正确的方向吗?

谢谢!

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

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

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

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


In older versions of Select2, if I remember correctly, the "onchange" event of the select to which the plugin was attached fired when a selection was made, this doesn't work at the momment.

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

上一个例子很好,但有 1 个错误: 需要使用 select2:selecting 而不是 select2:select

所以我们有

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