1
0
mirror of synced 2025-02-03 21:59:24 +03:00

Set up the click handler for closing

Now the dropdown will automatically be closed when the user clicks
outside of it.
This commit is contained in:
Kevin Brown 2014-11-01 19:29:07 -04:00
parent f8ca597f02
commit 130358e8ae
7 changed files with 116 additions and 6 deletions

View File

@ -1669,7 +1669,7 @@ define('select2/core',[
// Bind the container to all of the adapters
this._bindAdapters();
// Register any DOM event handler
// Register any DOM event handlers
this._registerDomEvents();
// Register any internal event handlers
@ -1746,6 +1746,26 @@ define('select2/core',[
Select2.prototype._registerDomEvents = function () {
var self = this;
$(document.body).on('mousedown', function (e) {
var $target = $(e.target);
var $select = $target.closest('.select2');
var $all = $('.select2.open');
$all.each(function () {
var $this = $(this);
if (this == $select[0]) {
return;
}
var $element = $this.data('element');
$element.select2('close');
});
});
this.$element.on('change', function () {
self.data.current(function (data) {
self.trigger('selection:update', {
@ -1864,6 +1884,8 @@ define('select2/core',[
this.$container = $container;
$container.data('element', this.$element);
return $container;
};

View File

@ -1669,7 +1669,7 @@ define('select2/core',[
// Bind the container to all of the adapters
this._bindAdapters();
// Register any DOM event handler
// Register any DOM event handlers
this._registerDomEvents();
// Register any internal event handlers
@ -1746,6 +1746,26 @@ define('select2/core',[
Select2.prototype._registerDomEvents = function () {
var self = this;
$(document.body).on('mousedown', function (e) {
var $target = $(e.target);
var $select = $target.closest('.select2');
var $all = $('.select2.open');
$all.each(function () {
var $this = $(this);
if (this == $select[0]) {
return;
}
var $element = $this.data('element');
$element.select2('close');
});
});
this.$element.on('change', function () {
self.data.current(function (data) {
self.trigger('selection:update', {
@ -1864,6 +1884,8 @@ define('select2/core',[
this.$container = $container;
$container.data('element', this.$element);
return $container;
};

View File

@ -11204,7 +11204,7 @@ define('select2/core',[
// Bind the container to all of the adapters
this._bindAdapters();
// Register any DOM event handler
// Register any DOM event handlers
this._registerDomEvents();
// Register any internal event handlers
@ -11281,6 +11281,26 @@ define('select2/core',[
Select2.prototype._registerDomEvents = function () {
var self = this;
$(document.body).on('mousedown', function (e) {
var $target = $(e.target);
var $select = $target.closest('.select2');
var $all = $('.select2.open');
$all.each(function () {
var $this = $(this);
if (this == $select[0]) {
return;
}
var $element = $this.data('element');
$element.select2('close');
});
});
this.$element.on('change', function () {
self.data.current(function (data) {
self.trigger('selection:update', {
@ -11399,6 +11419,8 @@ define('select2/core',[
this.$container = $container;
$container.data('element', this.$element);
return $container;
};

File diff suppressed because one or more lines are too long

24
dist/js/select2.js vendored
View File

@ -2097,7 +2097,7 @@ define('select2/core',[
// Bind the container to all of the adapters
this._bindAdapters();
// Register any DOM event handler
// Register any DOM event handlers
this._registerDomEvents();
// Register any internal event handlers
@ -2174,6 +2174,26 @@ define('select2/core',[
Select2.prototype._registerDomEvents = function () {
var self = this;
$(document.body).on('mousedown', function (e) {
var $target = $(e.target);
var $select = $target.closest('.select2');
var $all = $('.select2.open');
$all.each(function () {
var $this = $(this);
if (this == $select[0]) {
return;
}
var $element = $this.data('element');
$element.select2('close');
});
});
this.$element.on('change', function () {
self.data.current(function (data) {
self.trigger('selection:update', {
@ -2292,6 +2312,8 @@ define('select2/core',[
this.$container = $container;
$container.data('element', this.$element);
return $container;
};

File diff suppressed because one or more lines are too long

View File

@ -128,6 +128,26 @@ define([
Select2.prototype._registerDomEvents = function () {
var self = this;
$(document.body).on('mousedown', function (e) {
var $target = $(e.target);
var $select = $target.closest('.select2');
var $all = $('.select2.open');
$all.each(function () {
var $this = $(this);
if (this == $select[0]) {
return;
}
var $element = $this.data('element');
$element.select2('close');
});
});
this.$element.on('change', function () {
self.data.current(function (data) {
self.trigger('selection:update', {
@ -246,6 +266,8 @@ define([
this.$container = $container;
$container.data('element', this.$element);
return $container;
};