如何在 select2 单个 select 中触发标签创建(例如,当相邻按钮被按下时)?

How to trigger tag creation in select2 single select (e.g. when adjacent button is pressed)?

我正在使用 select2 4.0.3。我有一个用于输入电子邮件地址的 select2 框,我想确保所有电子邮件地址都包含在 .val() 中,也是用户仍在搜索字段中输入的地址。

表单字段被 $('.invite-emails-field') 引用。当我按下发送按钮时,在事件处理程序中 $('.invite-emails-field').val() 只给我前两个地址 test1@example.comtest2@example.com,而不是第三个地址 (test3@example.com)。

这是我初始化 select2 元素的方式:

$('.invite-emails-field').select2({
  tags: true,
  tokenSeparators: [',', ' '],
  selectOnBlur: true
});

selectOnBlur 没有效果,我找不到任何其他适用于 select2 v4 的东西。我尝试在各种元素上触发多个事件,none 有效。

我希望当我按下“发送”按钮时,我可以调用 select2 框来触发为搜索字段 test3@example.com 中的内容创建标签,随后.val() returns 一个包含所有三个地址的数组。

更新:我创建了一个 jsFiddle 供您使用。像这样输入:

然后按发送按钮,您将看到:

输出中缺少 test3@example.com

请注意,在我的实际应用程序中,我禁用了下拉菜单,因为我只想要标记行为。

您需要添加 selectOnClose 并将其设置为 true 以便在您关闭/单击搜索输入时它会为您创建标签。

$('select').select2({
  selectOnClose: true
});

在此处查看官方文档: https://select2.github.io/options.html#can-i-select-the-highlighted-result-when-the-dropdown-is-closed