如何防止 onSelect 在已经选择的项目上触发
How to prevent onSelect to fire on already selected item
我使用自动提示插件。
首先我有代码:
$('.auto').autocomplete({
lookup: data,
onSelect: function (suggestion) {
console.log(koji);
$('#cena_'+koji).val(suggestion.cena);
console.log(suggestion.ID);
$('#jmere'+koji).val(suggestion.jmere);
$('#kol'+koji).val(suggestion.kol);
$('#popust'+koji).val(suggestion.popust);
$('#pdv'+koji).val(suggestion.porez);
etc...
这没关系,所以当我从列表中选择一些项目时,我会更新其他输入字段。
但在那之后我只是为 #cena or #jmere
选择了其他值但是如果我再次单击输入字段 class .auto (之前选择的),然后 onSelect 再次被触发并且值 I手动选择 #cena or #jmere
已更改为建议值。
请帮我解决这个问题。那么当已经选择了项目时我如何防止调用 onSelect...
onSelect的JS代码为:
onSelect: function (index) {
var that = this,
onSelectCallback = that.options.onSelect,
suggestion = that.suggestions[index];
that.currentValue = that.getValue(suggestion.value);
if (that.currentValue !== that.el.val() && !that.options.preserveInput) {
that.el.val(that.currentValue);
}
that.signalHint(null);
that.suggestions = [];
that.selection = suggestion;
if ($.isFunction(onSelectCallback)) {
onSelectCallback.call(that.element, suggestion);
}
},
那么有什么方法可以更改 onSelect 选项 - 以防止在已经选择了某些项目时调用?
您可以使用 disable
:
禁用自动完成
$('SELECTOR').autocomplete('disable');
你可以像这样改回来:
$('SELECTOR').autocomplete('enable');
如果你想完全删除自动完成,你可以使用 despose
广告 OP 说:
$('SELECTOR').autocomplete('dispose');
我使用自动提示插件。
首先我有代码:
$('.auto').autocomplete({
lookup: data,
onSelect: function (suggestion) {
console.log(koji);
$('#cena_'+koji).val(suggestion.cena);
console.log(suggestion.ID);
$('#jmere'+koji).val(suggestion.jmere);
$('#kol'+koji).val(suggestion.kol);
$('#popust'+koji).val(suggestion.popust);
$('#pdv'+koji).val(suggestion.porez);
etc...
这没关系,所以当我从列表中选择一些项目时,我会更新其他输入字段。
但在那之后我只是为 #cena or #jmere
选择了其他值但是如果我再次单击输入字段 class .auto (之前选择的),然后 onSelect 再次被触发并且值 I手动选择 #cena or #jmere
已更改为建议值。
请帮我解决这个问题。那么当已经选择了项目时我如何防止调用 onSelect...
onSelect的JS代码为:
onSelect: function (index) {
var that = this,
onSelectCallback = that.options.onSelect,
suggestion = that.suggestions[index];
that.currentValue = that.getValue(suggestion.value);
if (that.currentValue !== that.el.val() && !that.options.preserveInput) {
that.el.val(that.currentValue);
}
that.signalHint(null);
that.suggestions = [];
that.selection = suggestion;
if ($.isFunction(onSelectCallback)) {
onSelectCallback.call(that.element, suggestion);
}
},
那么有什么方法可以更改 onSelect 选项 - 以防止在已经选择了某些项目时调用?
您可以使用 disable
:
$('SELECTOR').autocomplete('disable');
你可以像这样改回来:
$('SELECTOR').autocomplete('enable');
如果你想完全删除自动完成,你可以使用 despose
广告 OP 说:
$('SELECTOR').autocomplete('dispose');