diff --git a/src/js/select2/dropdown/closeOnSelect.js b/src/js/select2/dropdown/closeOnSelect.js index 1a47607e..fa6a82c4 100644 --- a/src/js/select2/dropdown/closeOnSelect.js +++ b/src/js/select2/dropdown/closeOnSelect.js @@ -25,7 +25,10 @@ define([ return; } - this.trigger('close', {}); + this.trigger('close', { + originalEvent: originalEvent, + originalSelect2Event: evt + }); }; return CloseOnSelect; diff --git a/src/js/select2/dropdown/selectOnClose.js b/src/js/select2/dropdown/selectOnClose.js index ee45de10..430c0329 100644 --- a/src/js/select2/dropdown/selectOnClose.js +++ b/src/js/select2/dropdown/selectOnClose.js @@ -8,12 +8,22 @@ define([ decorated.call(this, container, $container); - container.on('close', function () { - self._handleSelectOnClose(); + container.on('close', function (params) { + self._handleSelectOnClose(params); }); }; - SelectOnClose.prototype._handleSelectOnClose = function () { + SelectOnClose.prototype._handleSelectOnClose = function (_, params) { + if (params && params.originalSelect2Event != null) { + var event = params.originalSelect2Event; + + // Don't select an item if the close event was triggered from a select or + // unselect event + if (event._type === 'select' || event._type === 'unselect') { + return; + } + } + var $highlightedResults = this.getHighlightedResults(); // Only select highlighted results