Удаление нескольких запросов для поиска по onKeyUp - PullRequest
2 голосов
/ 05 августа 2011

Это правильный способ прервать несколько запросов, созданных при использовании поиска 'onkeyup'.

(Примечание. В случае множественного запроса я имею в виду создание последовательного запроса для каждого отдельного символа строки. Например:«Привет» создать «H», «Он», ... «Привет» - 5 разных запросов)

var insideReq = false;                      /* Initialise to false */
$('#search').keyup( function() {
    var SearchString = $('#search').val();
    if((SearchString.length) >= 3) {
        if(insideReq == true )              /* Check if somebody is inside */
            ajaxReq.abort();                /* If yes, then throw her out */
        insideReq = true;                   /* Inform I am inside */
        var ajaxReq = $.get('search.exec.php', {q: SearchString}, function(ajaxContent) {
            $('#container-list').html("<img src=\"img\\busy.gif\" class=\"busy-indicator\"/>");
            $('#container-list').fadeOut(5);
            $('#container-list').html(ajaxContent);
            $('#container-list').fadeIn(1500);
            insideReq = false;          /* Work done; I am going */
        });
    }
});

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

выглядит хорошо.Несколько методов оптимизации кода, чтобы ваш код выполнялся быстро.

var insideReq = false;                      /* Initialise to false */
$('#search').keyup( function() {
    var SearchString = $('#search').val();
    if((SearchString.length) >= 3) {
        if(insideReq == true )              /* Check if somebody is inside */
            ajaxReq.abort();                /* If yes, then throw her out */
        insideReq = true;                   /* Inform I am inside */
        var ajaxReq = $.get('search.exec.php', {q: SearchString}, function(ajaxContent) {
            $('#container-list')
            .html("<img src=\"img\\busy.gif\" class=\"busy-indicator\"/>");
            .fadeOut(5);
            .html(ajaxContent);
            .fadeIn(1500);
            insideReq = false;          /* Work done; I am going */
        });
    }
});
1 голос
/ 05 августа 2011

Вы хотите, чтобы это срабатывало, когда кто-то перестает печатать.Создайте таймер, скажем, 300 мс.Очистить и сбросить таймер при каждом нажатии клавиши.Когда таймер истекает, запустите ваш запрос AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...