.keyup() задержка и отправка одного запроса после нескольких нажатий
Суть в том, что бы не отправлять запросы по каждому нажатию клавиши, а установить timeout и отправить запрос.
То есть, пользователь вводит несколько символов, скажем "я хочу что-то искать" и запрос отправляется через 1 секунду после того, как пользователь перестал вводить символы, при этом не произошло потери фокуса или других событий. Как сделать timeout таким образом, что бы пропустить несколько событий и выполнить только последнее?
setTimeout(function() {
// код ajax запроса
}, 9000);
Но приводит к тому, что запросы откладываются и выполняются после подряд. Есть какие-нибудь идеи? |
Цитата:
по keyup() и обычно длине строки меньше 2 обнулять setTimeout и сразу устанавливать |
var busy=false;
function callAjax (Параметры) { if(!busy){busy=true;
// код ajax запроса
// в Callback устанавливаем:
busy=false; return;
} //End Callback
}}
|
Deff,
а где keyup() в вашем коде? |
рони,
Эт в его коде keyup() по которому он переходит на callAjax |
Цитата:
setTimeout(function() {
// код ajax запроса
Window.clearTimeout;
setTimeout({},1000);
}, 9000);
Будте добры, подробнее - результат тот же. Поиском ничего путного не нашел. |
Цитата:
$('#some_id').keyup(function() {
setTimeout(function() {
// тут ajax запрос
}, 1000);
});
|
userball,
var timer;
$('#some_id').keyup(function () {
window.clearTimeout(timer);
if ($('#some_id').val().length > 2) {
timer = setTimeout(function () {
// тут ajax запрос
}, 1000);
}
});
|
рони,
Не наю - я так понял, что необходимо закрыть аякс запросы после первого нажатия, до прихода ответа... А пост 8, -сколько кнопок раз нажал = столько и запрос повториться, а смысла в сбросе ответов сервера - мало |
Deff,
алгоритм такой - пока идёт набор текста -- сервер незапрашивать а ответ с сервера success выводить только если он совпадает со строкой набора. блокировать аякс запросы до прихода ответа ненужно в данном случае . |
| Часовой пояс GMT +3, время: 22:10. |