Javascript 设置多个Select2选项

Javascript 设置多个Select2选项,javascript,jquery-select2,Javascript,Jquery Select2,我有一个创建新对象的表单,可以通过Select2添加多个关键字 我使用Symfony;关键字取自实体。在Select2列表中添加现有关键字效果非常好 现在,我想让用户可以添加全新的关键字,这些新关键字将直接出现在Select2列表中 因此,我在“新对象窗体”上创建了一个“添加关键字”按钮,这将导致一个“新关键字”窗体(一个引导模式窗口) 用于将新创建的关键字添加到Select2列表的Javascript如下所示: function OnSuccess(result){ var keywo

我有一个创建新对象的表单,可以通过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');
}
函数成功(结果){
var关键字selected=新数组($(“#对象_关键字”)。选择2(“val”);
$(“#对象_关键字”).append(“”+result.name+“”);
关键字selected.push(result.id);
$(“#对象_关键字”)。选择2(“val”,关键字已选中);//
$('#addKeyword').modal('hide');
}
现在奇怪的是:

  • 我点击我的“添加关键字”按钮,我在“新关键字”表格中填写新关键字的名称,我验证,新关键字被添加到Select2列表-->一切正常
  • 我在另一次-->一切正常时也会做同样的事情,第二个新关键字会添加到上一个旁边的Select2列表中
  • 我第三次做同样的事情。。。第三个关键字被添加了,但前两个关键字消失了
即使第2条是数据库中已经存在的“旧”关键字,也会追加,但如果我只添加“旧”关键字(我可以添加任意多个),则不会追加

你知道问题出在哪里吗?

我继续搜索,偶然发现了一些似乎有效的东西(也就是说,我还没有找到一个不起作用的案例)

我更改了行的顺序并添加了“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);     
}
函数成功(结果){
$('#addKeyword').modal('hide');
$('#webobs_eventbundle_event_keywords')。追加(''+result.name+'')//在列表中添加新关键字
var关键字selected=$(“#webobs_eventbundle_event_关键字”)。选择2(“val”);
关键字selected.push(result.id);
$(“#webobs_eventbundle_event_关键字”)。选择2(“val”,null);
$(“#webobs_eventbundle_event_keywords”)。选择2(“val”,关键字选择);
}
不管怎样,我仍然对你对这个问题的看法感兴趣,因为我真的不明白为什么这个代码有效,而不是第一个