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