0

我正在使用 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);
});

谢谢

4

2 回答 2

5

thissetTimeout引用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);
});
于 2013-01-29T07:08:41.767 回答
0
var searchTimeout = null;
$('#ISBN').keyup(function () {
    clearTimeout(searchTimeout);

    searchTimeout = setTimeout(function () {
        // Here you have the search method
    }, 500);
});
于 2013-01-29T07:19:22.583 回答