Я использую Twitter Typeahead (v0.11.1). Я настроил вызов ajax, чтобы получить список предложений при вводе каждой буквы в текстовом поле.
При вводе каждого символа ajax-вызов отправляется и приносит результаты. Если текст вводится непрерывно в текстовом поле, то предыдущие вызовы ajax отменяются, и новый вызов ajax отправляется после паузы последнего введенного символа.
Таким образом, хотя этот процесс, если найдены некоторые результаты после двух символов и приостановлен, он показывает список предложений. Теперь, если продолжать вводить, то выходной список исчезает.
Я хотел бы сохранить список предложений для каждого вызова ajax, пока пользователь не выберет элемент из него.
Ниже приведен код, используемый:
var typeahead_pre_written_xhr = null;
var helper_typeahead = $( "#input-box" ).typeahead({
highlight: true,
minLength: 0
},
{
name: "Search Suggestions",
display: ["title"],
templates: {
empty: function () {
return '<div class="tt-suggestion tt-selectable">No matching helper comment found</div>';
}
},
source: function (query, processSync, processAsync) {
if( typeahead_pre_written_xhr != null ) {
typeahead_pre_written_xhr.abort();
typeahead_pre_written_xhr = null;
}
action_url = "suggestion_list";
return typeahead_pre_written_xhr = $.ajax({ cache: false
, url: action_url + query
, type: 'POST'
, data: { 'search': query }
, dataType: 'json'
, success: function (data)
{
return processAsync(data.res);
}
});
}
}).bind("typeahead:selected", function(evt, item) {
// do some stuff
});
Задача ещё не решена.
Других решений пока нет …