2
0
mirror of https://github.com/devbridge/jQuery-Autocomplete.git synced 2024-11-25 06:07:45 +00:00

Ignore "change" event when input value is set by plugin, fixes #669

This commit is contained in:
Tomas Kirda 2017-10-30 16:13:02 -05:00
parent 57528dd120
commit a7e84a4799

View File

@ -192,7 +192,6 @@
container.children('.' + selected).removeClass(selected); container.children('.' + selected).removeClass(selected);
}); });
// Listen for click event on suggestions list: // Listen for click event on suggestions list:
container.on('click.autocomplete', suggestionSelector, function () { container.on('click.autocomplete', suggestionSelector, function () {
that.select($(this).data('index')); that.select($(this).data('index'));
@ -457,6 +456,11 @@
}, },
onValueChange: function () { onValueChange: function () {
if (this.ignoreValueChange) {
this.ignoreValueChange = false;
return;
}
var that = this, var that = this,
options = that.options, options = that.options,
value = that.el.val(), value = that.el.val(),
@ -856,6 +860,7 @@
if (that.selectedIndex === 0) { if (that.selectedIndex === 0) {
$(that.suggestionsContainer).children().first().removeClass(that.classes.selected); $(that.suggestionsContainer).children().first().removeClass(that.classes.selected);
that.selectedIndex = -1; that.selectedIndex = -1;
that.ignoreValueChange = false;
that.el.val(that.currentValue); that.el.val(that.currentValue);
that.findBestHint(); that.findBestHint();
return; return;
@ -898,8 +903,14 @@
} }
if (!that.options.preserveInput) { if (!that.options.preserveInput) {
// During onBlur event, browser will trigger "change" event,
// because value has changed, to avoid side effect ignore,
// that event, so that correct suggestion can be selected
// when clicking on suggestion with a mouse
that.ignoreValueChange = true;
that.el.val(that.getValue(that.suggestions[index].value)); that.el.val(that.getValue(that.suggestions[index].value));
} }
that.signalHint(null); that.signalHint(null);
}, },