Jquery函数在Keyup之后延迟一段时间

时间:2013-01-29 07:06:30

标签: javascript jquery

我正在使用Jquery AJAX调用来获取一些绑定内容。我需要延迟一段时间以允许ajax调用来执行操作。我在Javascript中看到了使用 setTimeout 的示例。但我不知道如何使用它我的情况。我试过但它不起作用。请修复我的代码以便正常工作。

代码

    $('#ISBN').keyup(function () {
    window.setTimeout(function () {
        var value = $(this).val();
        var Cat = $(this).attr("Id");
        if (value == "" || value == '') {
            $('.Table').remove();
        }
        else {
            $.post('@Url.Action("AutoBibs", "PoDetails")', { Val: value, Category: Cat }, function (data) {

                if (Cat == "ISBN") {
                    $('.Table').remove();
                    $('#' + Cat).after('<div id="ISB" class="find" style="width: 10px !important; margin-left: 0px;"><span id="tablepartial"></span>');
                    $('#ISB').html(data);
                    $('#' + Cat).removeClass("wait");
                }                
          });
        }
    }, 2000);
});

由于

2 个答案:

答案 0 :(得分:4)

this的上下文中

setTimeout引用window对象而不是#ISBN元素,您应该在value之外声明setTimeout变量上下文或缓存$(this)对象。

var t = '';
$('#ISBN').keyup(function () {
    clearTimeout(t);
    var value = $(this).val(); // this.value
    // or cache the object
    // var $this = $(this); 
    t = setTimeout(function () {
    // var value = $this.val(); 
    // ...     
    }, 2000);
});

答案 1 :(得分:0)

var searchTimeout = null;
$('#ISBN').keyup(function () {
    clearTimeout(searchTimeout);

    searchTimeout = setTimeout(function () {
        // Here you have the search method
    }, 500);
});