Вопрос по jquery, javascript, ajax – keyup (function ()) задержка запроса ajax - jQuery

2

У меня есть запрос jQuery Ajax, который я хочу вызвать с вводом текста, и поэтому я вложил его внутрьkeyup(function(), Это отлично работает.

$("#text_box").keyup(function() {
 //AJAX REQUEST
});

Но иногда это ведет себя глючно. Когда я очень быстро ввожу какой-то текст, я получаю результаты для входного слова, при этом некоторые последние буквы исходного входного слова опускаются (возможно, это ошибка браузера). Я хочу, чтобы ajax-запрос отправлялся, когда в течение секунды не выполнялось никаких действий ввода, я имею в виду, если я очень быстро вводил текст и отдыхал в течение секунды (значит, я сделал ввод) Как я могу это сделать?

Почти идентичный вопрос уже был заданtoday: stackoverflow.com/questions/10830972/… lanzz
Вы можете увидеть этоstackoverflow.com/questions/1909441/jquery-keyup-delay Zernel

Ваш Ответ

3   ответа
1

О, мой бог. для кого-то, кто будет искать в 2014 году ...

function sendAjax() {
    setTimeout(
        function() {
            $.ajax({
                url: "url.php",
                type: "POST",
                data: data,
                success: function(data) {
                    $("#result").html(data);
                }
            });
        }, 2000);
}

<input onkeyup="function()">
Спасибо за публикацию ответа два года спустя, чтобы держать ветку в актуальном состоянии ...
2

Поскольку вы уже используете jQuery, вы можете использоватьдребезга Плагин от Бена Алемана.

Пример со страницы

// Bind the not-at-all debounced handler to the keyup event.
  $('input.text').keyup( text_1 );

  // Bind the debounced handler to the keyup event.
  $('input.text').keyup( $.debounce( 250, text_2 ) ); // This is the line you want!
6

Звучит так, как будто вы получаете результаты от предыдущего вызова AJAX. Используйте таймер сsetTimeout а такжеclearTimeout.

var timer = null;

$("#text_box").keyup(function() {
  if(timer) {
    clearTimeout(timer);
  }

  timer = setTimeout(someFunction, someDelay);
});

кудаsomeFunction это функция, которая делает ваш вызов AJAX иsomeDelay задержка, которую вы хотите подождать перед выполнением вызова, после того, как пользователь набрал, в мс.

Похожие вопросы