自动运行js,在用户停止键入后检查用户名是否可用;不起作用


auto run js check user name availability after user has stopped typing just doesn't work

我已经组合了itechroom checkUserName函数在用户完成键入函数后使用JohnP的run 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)",效果很好。。。

您似乎没有在任何地方声明usercheck(或者至少没有在代码段中设置其值)。似乎缺少的是…

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

但是,setTimeout也有问题。目前,checkUserName(usercheck)被立即调用,然后返回值被传递给setTimeout

由于您需要传递一个参数,因此可以将对checkUserName的调用封装在一个新函数中,该函数将在超时到期时调用,然后调用checkUserName:

setTimeout(function () {
    checkUserName(usercheck);
}, 1000);

您的代码不会在任何位置为变量usercheck设置值。。。这将是我的第一个猜测。