我有一个用于创建新对象的表单,可以通过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');
}
现在很奇怪:
即使2 fisrt是数据库中已存在的“旧”关键字,这也会附加,但如果我只添加“旧”关键字(我可以添加任意数量的关键字),则不会附加。
你知道问题可能来自哪里吗?
答案 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);
}
无论如何,我仍然对你对这个问题的看法感兴趣,因为我没有真正看到这个代码工作的原因而不是第一个......