我有一个允许多个选择的select2元素。选项之一是值为0的“无”,选择该选项时应清除以前选择的任何选项。我遇到的问题是在后端更新数据时,显示给用户的选项仍然保留。例如,我选择了苹果,但没有选择。苹果保持显示状态,但是已从values数组中删除,并且苹果再次显示为下拉菜单中的可用选项。尽管数据的完整性很好,但对用户而言,它似乎让苹果选择了两次或更多次。 (希望如此)
如果我从此功能之外在props_select
上触发了更改事件,则该事件将按预期运行,并且将更新用户视图。好像Select2在仍然执行change函数的同时不允许更新视图。
我正在使用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/