延迟运行一个功能3秒?

时间:2013-04-11 14:41:05

标签: javascript jquery sharepoint-2010 sharepoint-designer

我希望延迟运行此功能3秒钟:

<script type="text/javascript">
$('#FormsPageID table tr:nth-child(12) td:nth-child(2) div span span input')
  .on('focus', function(){
      var $this = $(this);
      if($this.val() == '4/11/2013'){
          $this.val('');
      }
  })
  .on('blur', function(){
      var $this = $(this);
      if($this.val() == ''){
          $this.val('4/11/2013');
      }
  });
</script>

我遇到的所有示例都涉及在X秒后使用setTimeout或显示元素。但我不确定这将如何适用于我的功能。

3 个答案:

答案 0 :(得分:3)

使用setTimeout:

setTimeout(function(){$('#FormsPageID table tr:nth-child(12) td:nth-child(2) div span span input')
 .on('focus', function(){
      var $this = $(this);
      if($this.val() == '4/11/2013'){
          $this.val('');
      }
  })
  .on('blur', function(){
      var $this = $(this);
      if($this.val() == ''){
          $this.val('4/11/2013');
      }
  });}, 3000);

答案 1 :(得分:3)

你需要使用setTimeout(),因为它被触发一次setInterval()被触发,直到调用清除间隔。

<强> Live Demo

$('#FormsPageID table tr:nth-child(12) td:nth-child(2) div span span input')
   .on('focus', function(){
    var $this = $(this);
    if($this.val() == '4/11/2013'){
       setTimeout(function(){ 
             $this.val('4/11/2013');
       }, 3000); 
     }
}).on('blur', function(){
      var $this = $(this);
      if($this.val() == ''){
          setTimeout(function(){ 
             $this.val('4/11/2013');
          }, 3000); 
      }
});

<强>的setTimeout

  

setTimeout()方法调用函数或计算表达式   在指定的毫秒数之后。

<强>的setInterval

  

setInterval()方法调用函数或计算表达式   以指定的间隔(以毫秒为单位)。

     

setInterval()方法将继续调用函数直到   调用clearInterval(),或关闭窗口。

答案 2 :(得分:0)

JQuery有自己的.delay()函数。 有关文档:http://api.jquery.com/delay/

虽然我无法为自己测试这个问题。这可能会让您知道如何实现这一目标。

<script type="text/javascript">
$('#FormsPageID table tr:nth-child(12) td:nth-child(2) div span span input').delay(3000).focus(function () { 
    var $this = $(this);
    if($this.val() == '4/11/2013'){
        $this.val('');
    }
  }).delay(3000).blur(function() {
    var $this = $(this);
    if($this.val() == ''){
        $this.val('4/11/2013');
    }
  });
</script>