如何在select2中单击allowClear后防止取消选择事件?

问题描述:

我知道此相关的问题是,unselecting事件可用于清除一些选定的选项之前触发动作: How to capture event when allowClear option of select2 is chosen?如何在select2中单击allowClear后防止取消选择事件?

但由于选择的选项已经被触发多次。如果我清除其中一个选项,它也会触发。 (请参阅http://jsfiddle.net/6rphh6d3/

我想要触发某些操作,但仅当点击按钮allowClear时,并且只有一次。

到目前为止,我已经想过:

  1. 利用这一事件,并过滤器不知何故它从何而来。
  2. 替换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; 
       }  
      }); 

不是最优雅,但工程