1
0
mirror of synced 2025-02-16 20:13:16 +03:00

Only trigger unselect for multiple

This fixes an issue where an `unselect` event would be incorrectly
triggered when the selected option was selected again in a single
select. This has been fixed now, so the even will only be triggered
for multiple selects. The `close` event will still be triggered
though, so the functionality will still remain the same to the user.

This closes https://github.com/select2/select2/issues/2959.
This commit is contained in:
Kevin Brown 2015-01-22 17:14:11 -05:00
parent bca4e1f6d8
commit 981c4065af
7 changed files with 107 additions and 39 deletions

View File

@ -479,9 +479,13 @@ define('select2/results',[
var data = $highlighted.data('data');
if ($highlighted.attr('aria-selected') == 'true') {
self.trigger('unselect', {
data: data
});
if (self.options.get('multiple')) {
self.trigger('unselect', {
data: data
});
} else {
self.trigger('close');
}
} else {
self.trigger('select', {
data: data
@ -597,10 +601,14 @@ define('select2/results',[
var data = $this.data('data');
if ($this.attr('aria-selected') === 'true') {
self.trigger('unselect', {
originalEvent: evt,
data: data
});
if (self.options.get('multiple')) {
self.trigger('unselect', {
originalEvent: evt,
data: data
});
} else {
self.trigger('close');
}
return;
}
@ -3632,6 +3640,13 @@ define('select2/defaults',[
HidePlaceholder
);
}
if (options.selectOnClose) {
options.resultsAdapter = Utils.Decorate(
options.resultsAdapter,
SelectOnClose
);
}
}
if (options.dropdownAdapter == null) {

View File

@ -479,9 +479,13 @@ define('select2/results',[
var data = $highlighted.data('data');
if ($highlighted.attr('aria-selected') == 'true') {
self.trigger('unselect', {
data: data
});
if (self.options.get('multiple')) {
self.trigger('unselect', {
data: data
});
} else {
self.trigger('close');
}
} else {
self.trigger('select', {
data: data
@ -597,10 +601,14 @@ define('select2/results',[
var data = $this.data('data');
if ($this.attr('aria-selected') === 'true') {
self.trigger('unselect', {
originalEvent: evt,
data: data
});
if (self.options.get('multiple')) {
self.trigger('unselect', {
originalEvent: evt,
data: data
});
} else {
self.trigger('close');
}
return;
}
@ -3632,6 +3640,13 @@ define('select2/defaults',[
HidePlaceholder
);
}
if (options.selectOnClose) {
options.resultsAdapter = Utils.Decorate(
options.resultsAdapter,
SelectOnClose
);
}
}
if (options.dropdownAdapter == null) {

View File

@ -917,9 +917,13 @@ define('select2/results',[
var data = $highlighted.data('data');
if ($highlighted.attr('aria-selected') == 'true') {
self.trigger('unselect', {
data: data
});
if (self.options.get('multiple')) {
self.trigger('unselect', {
data: data
});
} else {
self.trigger('close');
}
} else {
self.trigger('select', {
data: data
@ -1035,10 +1039,14 @@ define('select2/results',[
var data = $this.data('data');
if ($this.attr('aria-selected') === 'true') {
self.trigger('unselect', {
originalEvent: evt,
data: data
});
if (self.options.get('multiple')) {
self.trigger('unselect', {
originalEvent: evt,
data: data
});
} else {
self.trigger('close');
}
return;
}
@ -4070,6 +4078,13 @@ define('select2/defaults',[
HidePlaceholder
);
}
if (options.selectOnClose) {
options.resultsAdapter = Utils.Decorate(
options.resultsAdapter,
SelectOnClose
);
}
}
if (options.dropdownAdapter == null) {

File diff suppressed because one or more lines are too long

29
dist/js/select2.js vendored
View File

@ -917,9 +917,13 @@ define('select2/results',[
var data = $highlighted.data('data');
if ($highlighted.attr('aria-selected') == 'true') {
self.trigger('unselect', {
data: data
});
if (self.options.get('multiple')) {
self.trigger('unselect', {
data: data
});
} else {
self.trigger('close');
}
} else {
self.trigger('select', {
data: data
@ -1035,10 +1039,14 @@ define('select2/results',[
var data = $this.data('data');
if ($this.attr('aria-selected') === 'true') {
self.trigger('unselect', {
originalEvent: evt,
data: data
});
if (self.options.get('multiple')) {
self.trigger('unselect', {
originalEvent: evt,
data: data
});
} else {
self.trigger('close');
}
return;
}
@ -4070,6 +4078,13 @@ define('select2/defaults',[
HidePlaceholder
);
}
if (options.selectOnClose) {
options.resultsAdapter = Utils.Decorate(
options.resultsAdapter,
SelectOnClose
);
}
}
if (options.dropdownAdapter == null) {

File diff suppressed because one or more lines are too long

View File

@ -281,9 +281,13 @@ define([
var data = $highlighted.data('data');
if ($highlighted.attr('aria-selected') == 'true') {
self.trigger('unselect', {
data: data
});
if (self.options.get('multiple')) {
self.trigger('unselect', {
data: data
});
} else {
self.trigger('close');
}
} else {
self.trigger('select', {
data: data
@ -399,10 +403,14 @@ define([
var data = $this.data('data');
if ($this.attr('aria-selected') === 'true') {
self.trigger('unselect', {
originalEvent: evt,
data: data
});
if (self.options.get('multiple')) {
self.trigger('unselect', {
originalEvent: evt,
data: data
});
} else {
self.trigger('close');
}
return;
}