Javascript 使用「;setTimeout();在我的jQuery表达式中

Javascript 使用「;setTimeout();在我的jQuery表达式中,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我试图将JavaScript函数setTimeout()添加到我的jQuery表达式中。如果不使用setTimeout(),当我在文本框中输入文本时,我的函数将加载包含更新信息的局部视图。但是,每次击键都会加载信息。我的逻辑是,如果我可以输入一个计时器,那么当用户停止键入时,一秒钟后数据就会更新 正如您所看到的,我试图将setTimeout()放入,但它似乎不起作用 $(function() { $('#DocId').live('keyup', function() {

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

正如您所看到的,我试图将
setTimeout()
放入,但它似乎不起作用

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

    }),
});
谢谢,

Aaron

您可以使用并放入一个延迟计时器,该计时器将重置每次按键,如下所示:

$('#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()部分,您需要变量,因为当函数实际执行时,
是不同的上下文。

感谢您的帮助。我注意到是你回答了我的大部分JavaScript问题。