Select2 4.0 - 创建后推送新条目

Posted

技术标签:

【中文标题】Select2 4.0 - 创建后推送新条目【英文标题】:Select2 4.0 - Push new entry after creation 【发布时间】:2015-05-17 11:49:55 【问题描述】:

我已经使用 Select2 4.0.0-rc.1 几个星期了(使用 ajax 适配器),我正在尝试找到一种在数据初始化后“推送”数据的方法。

在下拉列表中,我可以选择

在列表中选择一个条目(使用ajax) 添加免费条目(使用createTag) 添加新条目

如果我选择“添加新条目”,我可以填写表格,一旦保存,新数据必须显示为选定条目。

如果我使用select2_existing.select2( data: data ).val( 4 ); 推送数据,它可以工作,但ajax 调用不再工作。

我必须这样做

    销毁 select2 重新创建它

这将使我的新数据和ajax 适配器正常工作。

没有create->data->destroy->create 循环是否可以做到这一点?

【问题讨论】:

【参考方案1】:

您应该能够通过使用您要显示的信息创建一个新的<option selected> 标记来推送一个新的选定选项。

<option value="id" selected="selected">text</option>

将此&lt;option&gt; 附加到原始&lt;select&gt; 后,您将需要触发change 事件,以便Select2(和其他组件)知道值已更改。

$element.trigger("change");

所以把它们放在 javascript

var $element = $("select"); // the element that Select2 is initialized on

var $option = $("<option selected></option>"); // the new base option
$option.val(newOption.id); // set the id
$option.text(newOption.text); // set the text

$element.append($option); // add it to the list of selections
$element.trigger("change"); // tell Select2 to update

【讨论】:

这对我在 v4 上不起作用。选项已删除,但 .trigger('change') 不会重新绘制并选择新选项 在尝试了对我有用的一切之后,非常感谢@kevin

以上是关于Select2 4.0 - 创建后推送新条目的主要内容,如果未能解决你的问题,请参考以下文章

带有 templateResult 和 templateSelection 的 jquery select2 (4.0) ajax

Select2:选择新标签后更新选项

select2 设置选中值新方法

使用格式动态设置 select2 选项

键入新标签时 Select2 失去焦点

使用带有无限数据和过滤器的 SELECT2 4.0.0