0

Я использую виджет автозаполнения Javascript, который правильно отображает список предложений по мере ввода, однако, когда я нажимаю клавишу «вниз» для просмотра списка, мой текущий вход стирается.Как сохранить то, что было введено в autocomplete

enter image description here SERVIÇO OU PRODUTO является заполнителем.

Хотя это не моя точная проблема, этот jsfiddle должен продемонстрировать проблему. После ввода буквы и нажатия клавиши «вниз» она заменяет мой ввод на выбор.

Это мой код:

$.widget('custom.mcautocomplete', $.ui.autocomplete, { 
    _create: function() { 
     this._super(); 
    }, 
    _renderItem: function(ul, item) { 
     var t = '', 
      result = ''; 

     $.each(this.options.columns, function() { 
      t = '<span>' + item[0] + ' - R$ ' + item[1] + '</span>'; 
     }); 

     result = $('<li></li>') 
      .data(item) 
      .append(t) 
      .appendTo(ul); 
     return result; 
    } 
}); 

$("#my-input").mcautocomplete({ 
    columns: my-columns, 
    source: my-info, 
    select: function(event, ui) { 
     this.value = (ui.item[0]); 
     return false; 
    } 
}); 

ответ

1

Вы должны отменить событие фокусировки:

focus: function(event, ui) { 
    event.preventDefault(); 
} 

Working demo on jsfiddle

jsfiddle вы предоставили ли отменить событие, но затем аннулирует свое собственное право действий используя это:

$("#customer-search").val(ui.item.label); 

Autocomplete Widget - event - focus См

фокус (событие, Ui)

Тип: autocompletefocus

Срабатывает, когда фокус перемещается к элементу (не выбирая). Действие по умолчанию заключается в замене значения текстового поля на значение сфокусированного элемента, хотя только если событие было вызвано взаимодействием с клавиатурой.

Отмена этого события предотвращает обновление значения, но не препятствует фокусировке пункта меню.

примеры кода

Инициализировать автозаполнения с фокусом обратного вызова указывается:

$(".selector").autocomplete({ 
    focus: function(event, ui) {} 
}); 

Bind прослушиватель события к событию autocompletefocus:

$(".selector").on("autocompletefocus", function(event, ui) {}); 
+0

То есть именно это я Я смотрю. Благодаря! –