用户停止输入后自动运行js检查用户名可用性只是不起作用

时间:2012-03-21 01:23:50

标签: php javascript jquery timer keydown

我已经结合了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 :(得分:0)

您的代码未在任何地方为变量usercheck设置值...这将是我的第一次猜测。

答案 1 :(得分:0)

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

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

但是,setTimeout也存在问题。按照目前的情况,立即调用checkUserName(usercheck),然后将返回值传递给setTimeout

由于你需要传递一个参数,你可以将一个新的函数包含在checkUserName的调用中,该函数将在超时到期时调用,然后调用checkUserName

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