1

我为我的表单提交构建了please waitgif 动画师,因为注册需要更多​​时间。

现在一切正常,但即使在成功消息之后,我的 gif 动画仍然继续运行。因此我的动画功能仍在运行。我怎样才能杀死那个功能?

这就是我现在所做的:

function loadSubmit(){
  ProgressImage = document.getElementById('progress_image');
  document.getElementById("progress").style.visibility = "visible";
  setTimeout("ProgressImage.src = ProgressImage.src",100);
  return true;
}

我在我的 ajax 函数之前调用它:

 loadSubmit();
 $.ajax({
   url: "/register_me/",
   type: "POST",
   ...
 }).done(function(){
      // can i somehow kill loadSubmit() function in this scope? 
 });

能够做到这一点真是太好了..

多谢

4

1 回答 1

2

setTimeout 返回一个整数值,然后可以使用函数 clearTimeout 清除该超时

function loadSubmit(){
   ProgressImage = document.getElementById('progress_image');
   document.getElementById("progress").style.visibility = "visible";
   // what exactly you want you achieve through this timeout
   return setTimeout("ProgressImage.src = ProgressImage.src",100);

}

var intervalID = loadSubmit();
$.ajax({
  url: "/register_me/",
  type: "POST",
  ...
}).done(function(){
   document.getElementById("progress").style.display = "none"; //EDIT
   clearTimeout(intervalID)
});

阅读 MDN 上的 setTimout 文档 https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout

编辑:我误读了这个问题。你需要隐藏 ProgressImage 来隐藏 gif,你仍然需要清除超时。

于 2013-03-20T03:55:46.823 回答