.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, время: 08:31. |