【发布时间】:2014-10-15 04:57:29
【问题描述】:
我有一个使用 AJAX 填充的 jQuery Select2 控件:
<input type="text" name="select2" id="select2" style='width:400px' value="999">
var initialSelection = { id: '999', text:"Some initial option"};
$("#select2").select2({
placeholder: "Select Option",
minimumInputLength: 2,
ajax: {
url: "/servletToGetMyData",
dataType: 'json',
data: function (term, page) { return { term: term }; },
results: function (data, page) { return { results: data.results} }
},
initSelection : function(element, callback){ callback(initialSelection); },
escapeMarkup: function (m) { return m; }
});
AJAX 链接到可能选项的数据库,如您所见,需要输入两个字符。
问题是如果数据库中不存在选项,用户可以使用对话框添加新选项。从该对话框返回后,我尝试:
var o = $("<option/>", {value: newID, text: newText});
$('#select2').append(o);
$('#select2 option[value="' + newID + '"]').prop('selected',true);
$('#select2').trigger('change');
但它不起作用。相同的代码适用于非 AJAX Select2 框。我尝试了各种替代方法,例如使用 $('#select2').select2("val", newID);,但它不起作用。
我什至尝试过完全删除 Select2 控件。但是,$('#select2').remove() 仅删除了原始 字段,但仍保留 Select2 控件。请注意,该页面有多个 Select2 控件,因此我不能为 Select2 控件使用类选择器,因为它会删除我需要的其他控件。
知道如何 a) 为使用 AJAX 的 Select2 控件动态添加选项;或者 b) 完全删除 Select2 控件,以便可以通过编程方式将其添加回来?或任何其他解决方案...
编辑 我发现另一个问题显示如何使用 .select2("destroy") 删除 select2 元素。这行得通,但在我看来,这是次优的。我更希望能够仅添加选项而不是销毁并重新创建 select2。
【问题讨论】:
-
插件版本不好说?
标签: jquery ajax jquery-select2