设置多个Select2选项

时间:2014-01-13 09:30:54

标签: javascript jquery-select2

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

我使用Symfony;关键字取自实体。在Select2列表中添加现有关键字非常合适。

现在,我想让用户可以添加全新的关键字,并且这些新关键字会直接显示在Select2列表中。

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

用于将新创建的关键字添加到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列表中 - &gt;一切都很好
  • 我再次做同样的事情 - &gt;一切都很好,第二个新关键字被添加到前一个
  • 附近的Select2列表中
  • 我第三次做同样的事情......第三个关键字被添加但两个首先消失 !!

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

你知道问题可能来自哪里吗?

1 个答案:

答案 0 :(得分:0)

嗯...

我继续搜索,偶然发现了一些似乎有用的东西(即我没有找到它没有的情况)。

我更改了行的顺序并添加了“clear 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);     
}

无论如何,我仍然对你对这个问题的看法感兴趣,因为我没有真正看到这个代码工作的原因而不是第一个......