【发布时间】:2012-11-02 12:41:18
【问题描述】:
因此,很遗憾,我们网站上有很多表单需要一段时间才能提交。
我想做的是编写一个通用脚本,在提交或单击提交按钮时将提交按钮替换为加载指示器,然后提交表单,遵循表单提交操作所做的任何重定向。
如果我使用 jQuery 替换表单提交上的按钮,它不会替换提交按钮,但仍会提交表单。决定在 .click() 上执行此操作,这会导致加载指示器替换提交按钮,但表单未提交。还尝试替换提交按钮然后放置一个setTimeout并导致提交按钮的父级使用jQuery submit() 函数提交,均无济于事。
我也经历过 AJAX 提交等,但每个都有自己的问题。
目前我的代码是:
$("#content form :submit").click(function(data) {
$(this).replaceWith('<img src="loader.gif" alt="submitting form" style="display:block; margin:0 auto">');
var form = $(this).parent("form");
setTimeout(function() {
console.log(form);
form.submit();
},1000);
});
我知道这个当前的代码是错误的,但我经历了很多不同的解决方案,得到了 90% 的结果,以至于我有点失去了它。有关如何执行此操作的任何建议?
编辑:抱歉,当我第一次提交时,我认为这不够明显。提交时,至少 Safari 上的 DOM 不再更新。尽管动作发生了,但 DOM 并没有改变并且提交发生了。结果是表单像往常一样提交,并且没有发生加载 gif。我认为将实际的表单提交延迟到 DOM 更新之前会修复它,但它似乎没有提交(1000 很长,但希望先让事情正常工作)。此外,如果我将侦听器放在提交而不是单击并尝试在其中调用 submit() 它将导致无限循环。
【问题讨论】: