我正在使用 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)
谢谢
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);
});
Run Code Online (Sandbox Code Playgroud)