【问题标题】:Set multiple Select2 options设置多个 Select2 选项
【发布时间】:2014-01-13 09:30:53
【问题描述】:

我有一个创建新对象的表单,它可以通过 Select2 添加多个关键字。

我使用 Symfony ;关键字取自实体。在 Select2 列表中添加现有关键字效果很好。

现在我想给用户添加全新关键字的可能性,这些新关键字直接出现在 Select2 列表中。

所以我在我的“新对象表单”上创建了一个“添加关键字”按钮,这会导致一个“新关键字”表单(一个引导模式窗口)。

用于将新创建的关键字添加到 Select2 列表的 Javascript 如下:

function OnSuccess(result){
    var keywordsSelected = new Array($("#object_keywords").select2("val")); 
    $('#object_keywords').append('<option value="'+result.id+'" selected="selected">'+result.name+'</option>');
    keywordsSelected.push(result.id);
    $("#object_keywords").select2("val", keywordsSelected); // 
    $('#addKeyword').modal('hide');
}

现在奇怪的是:

  • 我点击“添加关键字”按钮,在“新关键字”表单中填写新关键字的名称,我验证,新关键字已添加到 Select2 列表中 --> 一切正常
  • 我又做了同样的事情 --> 一切都很好,第二个新关键字被添加到前一个附近的 Select2 列表中
  • 我第三次做同样的事情,然后......添加了第三个关键字但两个第一个消失了!!

即使这 2 个第一个是数据库中已经存在的“旧”关键字,这也会附加,但如果我只添加“旧”关键字(我可以添加任意数量的关键字),这不会附加。

你知道问题出在哪里吗?

【问题讨论】:

    标签: javascript jquery-select2


    【解决方案1】:

    嗯……

    我继续搜索,偶然发现了一些似乎有效的东西(即,我还没有找到无效的案例)。

    我更改了行的顺序并添加了“清除 Select2”指令:

    function OnSuccess(result){
        $('#addKeyword').modal('hide');  
        $('#webobs_eventbundle_event_keywords').append('<option value="'+result.id+'" selected="selected">'+result.name+'</option>'); // Add the new Keyword in the list
        var keywordsSelected = $("#webobs_eventbundle_event_keywords").select2("val");
        keywordsSelected.push(result.id);
        $("#webobs_eventbundle_event_keywords").select2("val", null);
        $("#webobs_eventbundle_event_keywords").select2("val", keywordsSelected);     
    }
    

    无论如何,我仍然对你对这个问题的看法感兴趣,因为我真的不明白为什么这段代码可以工作而不是第一个......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多