jquery - 如何将数据附加到现有的Select2中

时间:2014-03-15 21:21:58

标签: javascript jquery jquery-select2

经过多次stackoverflow解决方案的一些研究后,他们都没有帮助我解决这个问题。

我有一个初始数据来填充select2的输入:

var select2_data = [{id:0, product_text:'text_1'},{id:1,product_text:'text_2'},{id:2, product_text:'text_3'}];

然后启动select2没有任何问题。

var select2 = $('#select2_id').select2(
{
   id: function(e) {return e.product_text; },
   data:{results: select2_data, text:'product_text'},
       width: '50%',
   placeholder: 'Choose a product', 
   formatSelection: Product_Result,
   formatResult: Product_Result 
});

但我的问题是我不知道如何将新数据添加到现有的select2输入中。

新数据示例:

var new_data = {id:4, product_text: 'text_4'};

我做了一些实验,尝试获取现有数据并附加到现有数据数组中,如下所示:

var select2_existing_data = $('#select2_id').select2('data');
select2_existing_data.append(new_data);

但经过一些研究后,这个 select2_existing_data 变量适合只返回选定的数据,而不是整个数据。

希望你能帮助我找到解决方案, 感谢

2 个答案:

答案 0 :(得分:1)

这不仅仅是附加到原始数据数组那么简单吗?

select2_data.push({ id: 4, product_text: 'text_4' });

答案 1 :(得分:1)

我曾经做过类似的事......

//get the current data array (what is currently in the select 2)
var dataArray = $("#myselect2").select2('data');

//push your additional item
dataArray.push({ "Name": 'MyNewItem', "Id": 'MyNewItemId' });

//push new item with items that were already in the list
$("#myselect2").select2("data", dataArray);

未经测试。您可能想检查select2('data')中是否有项目。