相关疑难解决方法(0)

如何延迟.keyup()处理程序直到用户停止输入?

我有一个搜索领域.现在它搜索每个keyup.因此,如果有人键入"Windows",它将使用AJAX搜索每个键盘:"W","Wi","Win","Wind","Windo","Window","Windows".

我希望有一个延迟,所以它只在用户停止键入200毫秒时搜索.

在函数中没有这个选项keyup,我试过了setTimeout,但它没有用.

我怎样才能做到这一点?

javascript jquery

618
推荐指数
12
解决办法
25万
查看次数

阻止执行回调直到输入停止

如果没有按下任何键,则触发AJAX调用的计时器.如果按下某个键,则中止最后一个计时器并添加一个新计时器.这就是我想做但却未能成功的事情.这是我的代码:

 var t;
 input.onkeyup = function(){
    $('.confirmText').html('Checking...');
    var timeStampObj = new Date()
    var timeStamp = timeStampObj.getTime();
    var oldTimeStamp = $(this).attr('timeStamp');//I store a timeStamp in the element
    if(timeStamp < 500 + oldTimeStamp){
        $(this).attr('timeStamp', timeStamp);
        clearTimeout(t);
    }
    t = setTimeout(function(){
        $.ajax({
            url: 'serverScripts/settings/checkEmailAvailability.php',
            data: 'email='+email,
            success: function(text){

           if(text == 'available'){
                $('.confirmText').html('Available!');
           }else{
                $('.confirmText').html('Occupied!');
               }
            }
        });
    }, 500);//Half a second
    $(this).attr('timeStamp', timeStamp);
}
Run Code Online (Sandbox Code Playgroud)

javascript timer javascript-events

3
推荐指数
1
解决办法
697
查看次数

标签 统计

javascript ×2

javascript-events ×1

jquery ×1

timer ×1