在 Keyup 之后延迟某个时间的 Jquery 函数

Dhe*_*eyv 0 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);
});
Run Code Online (Sandbox Code Playgroud)

谢谢

und*_*ned 5

thissetTimeout引用window对象而不是#ISBN元素的上下文中,您应该valuesetTimeout上下文之外声明变量或缓存$(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);
});
Run Code Online (Sandbox Code Playgroud)