我正在尝试将 JavaScript 函数 setTimeout()
添加到我的 jQuery 表达式中。如果没有 setTimeout()
,当我在文本框中输入文本时,我的函数会加载包含更新信息的部分 View 。但是,它会在每次击键时加载信息。我的逻辑是,如果我可以放入一个计时器,那么当用户停止输入时,数据会在一秒钟后更新。
如您所见,我尝试放入一个 setTimeout()
,但它似乎不起作用。
$(function() {
$('#DocId').live('keyup', function() {
setTimeout(var styleValue = $(this).val();
$('#tableContent').load(
'/CurReport/TableResults',
{ style: $(this).val()}), 1000);
}),
});
谢谢,
亚伦
最佳答案
您可以使用 .data()
并放入一个延迟计时器来重置每次击键,如下所示:
$('#DocId').live('keyup', function() {
clearTimeout($.data(this, 'timer'));
var val = $(this).val();
var wait = setTimeout(function() {
$('#tableContent').load('/CurReport/TableResults', { style: val });
}, 1000);
$(this).data('timer', wait);
});
这会在每次键入它的元素上设置 1 秒的超时(可以同时进行任意数量的操作)。每次击键都会清除前一个计时器并设置一个新计时器,因此只有在 1 秒未键入后才会触发该功能。
注意:不要删除 var val = $(this).val();
部分,您需要变量,因为 this
是不同的上下文函数实际执行。
关于javascript - 在我的 jQuery 表达式中使用 "setTimeout()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524180/