1

please wait登録にはもう少し時間がかかるため、フォーム送信用に gif アニメーターを作成しました。

すべてが正常に動作するようになりましたが、成功メッセージが表示された後も 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 https://developer.mozilla.org/en-US/docs/DOM/window.setTimeoutで setTimout のドキュメントを読む

編集:質問を読み違えました。gifを非表示にするにはProgressImageを非表示にする必要がありますが、タイムアウトをクリアする必要があります。

于 2013-03-20T03:55:46.823 に答える