我为我的表单提交构建了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?
});
能够做到这一点真是太好了..
非常感谢
答案 0 :(得分: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,你仍然需要清除超时。