在我的jQuery Expression中使用"setTimeout()"

Aar*_*zar 3 javascript jquery settimeout

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

正如你所看到的那样,我试图放入一个setTimeout(),但它似乎没有起作用.

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

    }),
});
Run Code Online (Sandbox Code Playgroud)

谢谢,

亚伦

Nic*_*ver 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);
});
Run Code Online (Sandbox Code Playgroud)

这会在键入它的元素上每次击键时设置1秒的超时(可以同时进行任意数量的这些击键).每次击键都会清除前一个计时器并设置一个新计时器,因此只有在完成第二次未输入后,该功能才会触发.

注意:不要删除该var val = $(this).val();部分,您需要变量,因为this当函数实际执行时,它是一个不同的上下文.