1
0
mirror of synced 2025-02-04 14:19:23 +03:00

Added the option to select highlighted upon blur, false by default. Original functionality is maintained by default.

This commit is contained in:
Alex Kinnee 2012-12-12 13:54:47 -05:00
parent ac4ce8b0eb
commit fa6313afa4

View File

@ -1308,6 +1308,10 @@ the specific language governing permissions and limitations under the Apache Lic
// abstract // abstract
blur: function () { blur: function () {
// if selectOnBlur == true, select the currently highlighted option
if (this.opts.selectOnBlur)
this.selectHighlighted({noFocus: true});
this.close(); this.close();
this.container.removeClass("select2-container-active"); this.container.removeClass("select2-container-active");
this.dropdown.removeClass("select2-drop-active"); this.dropdown.removeClass("select2-drop-active");
@ -1335,14 +1339,14 @@ the specific language governing permissions and limitations under the Apache Lic
}, },
// abstract // abstract
selectHighlighted: function () { selectHighlighted: function (options) {
var index=this.highlight(), var index=this.highlight(),
highlighted=this.results.find(".select2-highlighted").not(".select2-disabled"), highlighted=this.results.find(".select2-highlighted").not(".select2-disabled"),
data = highlighted.closest('.select2-result-selectable').data("select2-data"); data = highlighted.closest('.select2-result-selectable').data("select2-data");
if (data) { if (data) {
highlighted.addClass("select2-disabled"); highlighted.addClass("select2-disabled");
this.highlight(index); this.highlight(index);
this.onSelect(data); this.onSelect(data, options);
} }
}, },
@ -1692,12 +1696,14 @@ the specific language governing permissions and limitations under the Apache Lic
}, },
// single // single
onSelect: function (data) { onSelect: function (data, options) {
var old = this.opts.element.val(); var old = this.opts.element.val();
this.opts.element.val(this.id(data)); this.opts.element.val(this.id(data));
this.updateSelection(data); this.updateSelection(data);
this.close(); this.close();
if (!options || !options.noFocus)
this.selection.focus(); this.selection.focus();
if (!equal(old, this.id(data))) { this.triggerChange(); } if (!equal(old, this.id(data))) { this.triggerChange(); }
@ -2053,7 +2059,7 @@ the specific language governing permissions and limitations under the Apache Lic
}, },
// multi // multi
onSelect: function (data) { onSelect: function (data, options) {
this.addSelectedChoice(data); this.addSelectedChoice(data);
if (this.select || !this.opts.closeOnSelect) this.postprocessResults(); if (this.select || !this.opts.closeOnSelect) this.postprocessResults();
@ -2075,6 +2081,7 @@ the specific language governing permissions and limitations under the Apache Lic
// added we do not need to check if this is a new element before firing change // added we do not need to check if this is a new element before firing change
this.triggerChange({ added: data }); this.triggerChange({ added: data });
if (!options || !options.noFocus)
this.focusSearch(); this.focusSearch();
}, },
@ -2424,7 +2431,8 @@ the specific language governing permissions and limitations under the Apache Lic
} }
return markup; return markup;
}, },
blurOnChange: false blurOnChange: false,
selectOnBlur: false
}; };
// exports // exports