如何防止 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');

jsfiddle DEMO

如果你想完全删除自动完成,你可以使用 despose 广告 OP 说:

$('SELECTOR').autocomplete('dispose');