如何在select2中单击allowClear后防止取消选择事件?
问题描述:
我知道此相关的问题是,unselecting
事件可用于清除一些选定的选项之前触发动作: How to capture event when allowClear option of select2 is chosen?如何在select2中单击allowClear后防止取消选择事件?
但由于选择的选项已经被触发多次。如果我清除其中一个选项,它也会触发。 (请参阅http://jsfiddle.net/6rphh6d3/)
我想要触发某些操作,但仅当点击按钮allowClear
时,并且只有一次。
到目前为止,我已经想过:
- 利用这一事件,并过滤器不知何故它从何而来。
- 替换
AllowClear._handleClear
函数的逻辑。
我正在使用select2 4.0.0。
答
有点晚了,但看到我再次在这里结束了,我相信这是你在哪里寻找。
var data = [
{id: 0, text: 'enhancement'},
{id: 1,text: 'bug'},
{id: 2,text: 'duplicate'}];
$(".js-example-data-array").select2({
data: data,
placeholder: 'placeholder',
allowClear: true
}).on("select2:unselecting", function(e)
{
$(this).data('state', 'unselected');
}).on("select2:opening", function(e) {
if ($(this).data('state') === 'unselected') {
$(this).removeData('state');
return false;
}
});
不是最优雅,但工程