Я создал поле ввода автозаполнения (адреса поиска) с помощью модуля поиска Semantic-UI. Само автозаполнение работает нормально, но я испытываю странное поведение при попытке настроить действия с помощью метода OnSelect.
$('#address_search')
.search({
apiSettings: {
url: 'ajax_search_address/{query}'
},
minCharacters: 4,
maxResults: 5,
showNoResults: true,
type: 'category',
searchDelay: 0,
duration: 200,
fields: {
categories: 'results',
categoryName: 'state',
categoryResults: 'results',
description:'city',
},
onSearchQuery: function(query){
$('#address_search').addClass("loading");
},
onResults: function (response){
$('#address_search').removeClass("loading");
},
onSelect: function(result, response) {
address = result.title + ', ' + result.city + ' ' + result.region;
$('#address_search').search('set value', address);
//$('#address_search').find('input').val(address);
$('#address_search').search('hide results');
$('#address_search').removeClass("loading");
return false;
},
});
Причина, по которой я использую собственный метод OnSelect, заключается в том, чтобы отобразить результат адреса определенным образом (отличным от того, как он возвращается). Проблема, с которой я сталкиваюсь, заключается в том, что кажется, что когда я выбираю адрес из возвращаемого списка, он правильно вызывает «установить значение», но затем, похоже, генерирует новый вызов ajax с новым значением, следовательно, представляет новый раскрывающийся список с этим адресом снова (само собой). Как показано в приведенном выше вызове, я попытался вручную присвоить значение полю ввода с помощью jQuery (вместо вызова «установить значение»), но снова поведение такое же.
Я попытался использовать метод «отменить запрос» сразу после того, как попытался отменить этот последний вызов ajax при выборе значения, но, похоже, это не имеет никакого эффекта (и я бы предпочел избежать ненужного вызова).
Кто-нибудь знает, как предотвратить это? Метод onSelect по умолчанию (когда установлено значение «return true» не показывает такого поведения, поэтому я предполагаю, что есть способ предотвратить это, но я не смог найти его на основе документации или других потоков по этому вопросу.
Спасибо!!
return true
запускает действие по умолчанию (из семантического документа: функция должна возвращать false, чтобы предотвратить действие по умолчанию (закрытие результатов поиска и выбор значения)). В этом случае я пытаюсь отобразить значение в определенном формате (согласно переменнойaddress
). Если я используюreturn true
, то он показывает форматирование по умолчанию после получения значения, перезаписывая формат, который я определил. Любая идея о том, как это сделать? 27.02.2019setTimeout
, а затем возвращаете true, чтобы установить таймер на 10 миллисекунд, а затем меняете значение раскрывающегося списка внутри тайм-аута. 27.02.2019