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

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

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

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

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

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

我必须这样做

  1. 销毁 select2
  2. 重新创建它

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

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

【问题讨论】:

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


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2016-08-12
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    相关资源
    最近更新 更多