无法清除 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", []);
我有一个允许多个 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", []);