событие onkeyup JavaScript - PullRequest
       7

событие onkeyup JavaScript

0 голосов
/ 08 октября 2010

Вот мой код:

function search_buddy() 
{
    $.post("num.php",function (ret){
        num=ret;
    });
    $("#Layer7").html(num);
}
</script>

<div id="Layer8">
     Find a buddy : 
    <input type="text" id="search" onkeyup="search_buddy()"/>&nbsp;:
</div>

Теперь, когда я ввожу один символ в текстовое поле с id = search, функция search_buddy, похоже, не срабатывает. Принимая во внимание, что если я ввожу два или более символов, функция работает отлично. Почему это происходит?

1 Ответ

0 голосов
/ 08 октября 2010

Лучший ресурс по событиям DOM: http://www.quirksmode.org/dom/events/keys.html

Похоже, ваш обработчик событий "search_buddy" запускает AJAX-запрос, который является асинхронным.Остальная часть функции выполняется параллельно с запросом AJAX, поэтому «num» не определено до того, как возвращается $ .post.

// num is undefined here... unless your network has 0 latency
$("#Layer7").html(num);

Вам нужно обернуть этот код (вставленный выше) в функцию обратного вызова.Похоже, это номер параметра 3: http://api.jquery.com/jQuery.post/

Не проверено, но лучше всего предположить:

function search_buddy() {
    $.post("num.php", function (ret) {
        num=ret;
        $("#Layer7").html(num);
    });
}

Вот некоторые изменения, которые помогут вам понять:

function search_buddy() {
    alert("before the $.post execution");
    $.post("num.php", function (ret) {
        num=ret;
        $("#Layer7").html(num);
        alert("$.post callback");
    });
    alert("immediately after the $.post execution");
}

Примечание: «alert» остановит всю обработку JavaScript, поэтому вы сможете увидеть, какие события происходят, когда.

...