初始化后向Select2添加选项

Add options to Select2 after inititialzation

这似乎是一件标准的事情,但是我一直在努力寻找一个清晰而简单的解决方案。

我希望能够向已经初始化的Select2添加一个或多个其他选项。

我使用的是Select2的旧版本,但不确定该版本是什么版本。


您可以以与在标准问题将是:添加使用javascript选择的选项。

1
2
var option = new Option("text","id");
$("select").append(option);

如果希望在插入时选择它,则只需在新选项上设置selected属性。

1
2
3
4
5
var option = new Option("text","id");
option.selected = true;

$("select").append(option);
$("select").trigger("change");

请注意,我还触发了change事件,以便Select2可以知道所选选项已更改。


上帝,我应该在发布之前停止思考。

就像将新选项添加??到基础选择中一样简单:

1
$("#myselect").append($('<option>', {value: 1, text: 'new option'}));

甚至不需要重新初始化select2


我用select2的"数据"属性解决了这个问题。首先,我使用json获取数据,然后使用下面的数组创建select2元素。

corrCodeArray是我的json数组。

1
2
3
4
5
6
function fillSelectReportPeriod() {
var corrCodeArray = retrieveCorrCodes();
$(".js-example-basic-multiple").select2({
    maximumSelectionLength: 4,
    data: corrCodeArray
});

}

注意:当我给select2元素名称如$("#selectReportPeriod")而不是$(".js-example-basic-multiple")时,它没有用,所以我使用了类名。


这对我有用:

1
$("#company_dealer").val('Newly Selected Dealer').trigger('change');