在使用 jQuery Select2 时,
minimumInputLength: 1 和 allowClear: true 可能产生“冲突现象”——比如清除按钮(✖)不显示、或者清除后无法再次触发搜索。

测试示例:点击“x”后,弹出以下提示窗:

问题分析:

allowClear: true 允许你清空选项,但 它只在以下两种情况下生效:

  • 该 Select2 不是 multiple 模式
  • 当前有一个非空的值(即有选中项)

而当你设置:minimumInputLength: 1,表示必须输入至少 1 个字符才能触发下拉搜索。

于是产生冲突:

  1. 你清空选项(点击 ✖)后,输入框被清空;
  2. 但 Select2 会立即检测输入长度为 0,不再显示候选项;
  3. 视觉上看起来像是“清空功能不生效”或“无法重新选择”。

解决办法:

1、允许清空后手动触发搜索(推荐)

<select id=”yourSelect”>
<option></option> <!– 空 option 很关键 –>
</select>

$(‘#yourSelect’).select2({
language: “<?php echo empty($language)?’zh-CN’:$language; ?>” ,
placeholder: ‘请选择’,
minimumInputLength: 1,
allowClear: true,
ajax: {
url: ‘/api/customers’,
data: function (params) {
return { q: params.term };
}
}
}).on(‘select2:unselecting’, function (e) {
$(this).select2(‘open’);
});

事件区别

事件名 触发时机 实际触发条件 是否可靠触发
select2:clear 清空完成后(值变成空) 仅当有 placeholder 且 allowClear: true 时 ❌ 不一定触发
select2:unselecting 点击清空按钮的那一刻(尚未清空) 只要 allowClear: true 就能触发 ✅ 稳定触发

用户点击 ✖ 清除按钮时,
→ select2:unselecting ✅ 立即触发。

接着值被清空,
→ select2:clear ❌ 只有在存在 placeholder 的 select 才可能触发。
如果你动态初始化(AJAX 数据)、没有 <option></option>,就不会触发。

 

作者 admin

百度广告效果展示