Javascript “AJAX验证”;冻结“;在jQuery中?

Javascript “AJAX验证”;冻结“;在jQuery中?,javascript,jquery,Javascript,Jquery,我使用bvalidator验证字段。它似乎在每次按键时都会启动此功能,用户无法在ajax调用完成之前继续键入。我真的不知道该怎么办 例如,如何使函数不超过每两秒钟运行一次?您可以使用节流插件来节流调用: 您需要去掉async:false,但还需要修改代码以异步工作。同步性是导致UI“冻结”的原因 也许您可以尝试设置一个超时,该超时将在按下输入键后运行2秒,但如果按下另一个键,则会重新启动计时器。所以本质上,只有在两秒钟没有按键的情况下,它才会出现 function checkuser(user)

我使用bvalidator验证字段。它似乎在每次按键时都会启动此功能,用户无法在ajax调用完成之前继续键入。我真的不知道该怎么办


例如,如何使函数不超过每两秒钟运行一次?

您可以使用节流插件来节流调用:


您需要去掉
async:false
,但还需要修改代码以异步工作。同步性是导致UI“冻结”的原因

也许您可以尝试设置一个超时,该超时将在按下输入键后运行2秒,但如果按下另一个键,则会重新启动计时器。所以本质上,只有在两秒钟没有按键的情况下,它才会出现

function checkuser(user) {
        var ret = false;
        $.ajax({ type:'POST', url:'user.php',
            async:false,
            data:{'user':user},
            success:function (data) {
                if (data == 1) ret = true
            } });

        return ret;
    }
您需要更新checkuser ajax调用,以使智能回调异步工作:

var validateTimeout;

$('#target').keydown(function() {
  clearTimeout(validateTimeout);
  validateTimeout = setTimeout(function(){checkuser(user);},2000);
});

checkuser()
函数在哪里/如何使用?您正在将
async
属性设置为false,您确定这就是您想要的吗?哎呀,误读了问题。我希望新标题能更公正。@Marko@DvirAzulay我不确定,我只是按照我刚刚发布的链接上的说明做的。我将尝试启用它。
function checkuser(user) {
    $.ajax({ type:'POST', url:'user.php',
        async:false,
        data:{'user':user},
        success:function (data) {
            if(data == 1){
              //something to indicate sucess
            }else{
             //something to indicate failure
            }
        } });
}