Ajax 在 select2 中选择多个值

Ajax selecting multiple values in select2

我正在使用 select 2,我有来自 ajax 的 json 格式的数据。

查看:

<select class="form-control qual_id" multiple>
    <option value="">-Select Degree-</option>
    <option value="1">SSC</option>
    <option value="2">HSC</option>
    <option value="3">BBA</option>
    <option value="4">MBA</option>
</select>

Ajax:

var defaultValue = 1,2 // (it can be one id or two ids)

$(`.qual_id option[value=${defaultValue}]`).attr('selected', true);

select2:

<script type="text/javascript">
$('.qual_id').select2({
  width: 'resolve',
  maximumSelectionLength: 2
});
</script>

if i remove multiple from select tag and and do it without select2 with one id, it is working fine, but how can i do it by selecting multiple values in select.

控制台:

Uncaught Error: Syntax error, unrecognized expression: .qual_id option[value=1,2]

var defaultValue = [1,2];
$(`.qual_id`).val(defaultValue);

这应该设置默认选择的值 1 和 2。

几个月前我回答过类似的问题。可以参考Dynamically add item to jQuery Select2 control that uses AJAX

要回答您的问题,请考虑这个示例。

for(let i=0; i<jsonResponse.length; i++) {
    $(".qual_id").each(function() {
            if($(this).val() == jsonResponse[i]) {
            // select the option
        }
    });
}
$('.qual_id').trigger('change'); 

您正在寻找的是 .trigger() 方法。参考 Select2 Docs