Задержка загрузки
Я использую twart bootstrap typeahead для отображения некоторых данных с сервера, проблема заключается в том, когда пользователь вводит букву typeahead, которая вызывает ajax-вызов на сервер, и когда я пытаюсь быстро набирать 2 или 3 буквы, это приведет к 2 или 3 вызовам ajax сервер, есть возможность сделать задержку, когда пользователь вводит буквы, чтобы сделать только один вызов ajax на сервер
мой код на данный момент:
$('#SEARCH-INPUT').typeahead({
source: function (query, process) {
jQuery.ajax({
type: "GET",
url: "/organisations/search",
data: {search_name: $("#SEARCH-INPUT").val()},
beforeSend: function(){
$("#SEARCH-LOADING").show();
},
success: function (data) {
organisations = [];
organisations_hash = {};
$.each(data, function(i, item){
organisations_hash[item.name.toUpperCase()] = item.id;
organisations.push(item.name);
});
organisations.sort();
$("#SEARCH-LOADING").addClass("hidden");
process(organisations);
},
error: function (){ alert("error");},
async: false
});
}
,updater: function (item) {
$("#SEARCH-INPUT").val(item);
$("#SEARCH-BUTTON").click();
return item;
}
,items: 9
,minLength: 1
});
Ответы
Ответ 1
Используйте это решение:
(function() {
var timeout;
$('[name="fill"]').typeahead({
source: function(value) {
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(function() {
alert(value);
}, 300);
}
});
})();
Смотрите в действии:
http://jsfiddle.net/nnPVn/
setTimeout и clearTime отлично работают!