автоматический запуск JS проверить доступность имени пользователя после того, как пользователь прекратил печатать, просто не работает - PullRequest
2 голосов
/ 21 марта 2012

Я объединил функцию itechroom checkUserName с командой JohnP, запустив js после того, как пользователь закончил печатать, но, похоже, она не работает ...

$(document).ready(function(){
    //JohnyP keydowntimer
    var timer = null;
    $('#username').keydown(function(){
        clearTimeout(timer);
        timer = setTimeout(checkUserName(usercheck), 1000);
    });

    //http://www.itechroom.com
    function checkUserName(usercheck){
            $('#usercheck').html('<img src="images/ajax-loader.gif" />');
            $.post("checkuser.php", {username: usercheck} , function(data){
                if (data != '' || data != undefined || data != null){
                    $('#usercheck').html(data);
                }
            });
    }
})

Я пробовал onblur="checkUserName(this.value)", и она работала хорошо...

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

Не похоже, что вы декларируете usercheck где-либо (или, по крайней мере, не устанавливаете его значение во фрагменте). Кажется, что не хватает ...

$('#username').keydown(function () {
    var usercheck = $(this).val(); // ...this line.
    // etc.
});

Но у вас также есть проблема с setTimeout. В существующем состоянии checkUserName(usercheck) вызывается немедленно, а затем возвращаемое значение передается в setTimeout.

Поскольку вам нужно передать аргумент, вы можете заключить вызов в checkUserName в новую функцию, которая будет вызываться по истечении времени ожидания и, в свою очередь, будет вызывать checkUserName:

setTimeout(function () {
    checkUserName(usercheck);
}, 1000);
0 голосов
/ 21 марта 2012

Ваш код не устанавливает значение для переменной usercheck в любом месте ... будет моим первым предположением.

...