重建select2选项而不丢失当前选择

Rebuild select2 options without losing current selection

本文关键字:选择 select2 选项 重建      更新时间:2023-09-26

我的应用程序中有一个select2下拉元素,它会根据用户输入进行筛选。

要执行过滤,我执行以下操作:

$mySelect2Menu.empty();
$.each(newData, function(ind, val) {
   $mySelect2Menu.append($('<option></option>').attr('value', val).text(val));
});

然而,因此,对$('#mySelect2Menu').val()的后续调用将返回null。

我希望在重新填充菜单选项后,能够在select2中保留任何选定的值。做这件事最好的方法是什么?

作为一个重要的附带说明,对于我的特定用例,可以保证当重新填充菜单时,用户的当前选择newData中可用。

我用一种非常简单的方式解决了这个问题。我只是将当前选择的选项存储在一个临时变量中,重新生成select,然后用临时变量调用select2('val')

var selectedVals = $sel.val();
$sel.empty();
$.each(newOptions, function(ind, val) {
  $sel.append($('<option></option>').attr('value', val).text(val));
});
$sel.select2('val', selectedVals);