无法清除 select2

unable to clear select2

我有一个允许多个 select 离子的 select2 元素。其中一个选项是 "none",值为 0,当 selected 应该清除任何以前 selected 的选项。我遇到的问题是在后端更新数据时,显示给用户的选项仍然存在。例如,我 select 个苹果,然后 select none。 Apples 保持显示状态,但它已从值数组中删除,并且 apples 再次显示为下拉列表中的可用选项。虽然数据的完整性很好,但对于用户来说,它可能看起来有苹果 select 两次或更多次。 (希望有意义)

如果我从该函数外部触发 props_select 上的更改事件,它会按预期工作并且用户的视图会更新。就好像 Select2 在执行更改功能时不允许更新视图。

我使用的是 Select2 3.5,我知道它已经过时,但它超出了我的控制范围。要更新到较新的版本需要安全批准,然后进行数月的回归测试(这很糟糕)。

$('#props_select').change(function(e){

    if( typeof e.added != 'undefined' && e.added.id == '0'){
        $('#props_select').val([0]).trigger('change');

    }
});



<div class="select-filter">
    <label for="props_select">Equipment contains:</label>
    <select id="props_select" name="props_select" class="form-control 
        form-control-lg" multiple="multiple">
        <cfloop query="myquery">
            // build options here
        </cfloop>

        <option value="0">None</option>
    </select>
</div>

我认为您正在使用新的 Select2 文档。应该是:

$(this).select2("val", []);

演示:https://jsfiddle.net/zbwh7qdr/1/