3

我正在尝试将 JavaScript 函数添加setTimeout()到我的 jQuery 表达式中。如果没有setTimeout()my 函数,当我在文本框中输入文本时,会加载带有更新信息的部分视图。但是,它会在每次击键时加载信息。我的逻辑是,如果我可以设置一个计时器,那么当用户停止输入时,一秒钟后数据就会更新。

如您所见,我尝试输入一个setTimeout(),但它似乎不起作用。

$(function() {
    $('#DocId').live('keyup', function() {
        setTimeout(var styleValue = $(this).val();
        $('#tableContent').load(
        '/CurReport/TableResults', 
        { style: $(this).val()}), 1000);

    }),
});

谢谢,

亚伦

4

1 回答 1

5

您可以使用.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函数实际执行时是不同的上下文。

于 2010-03-26T15:05:57.030 回答