我正在使用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
});