我正在一个动态的在线表单网站上工作。在主窗体中,我有多个可以动态添加和删除的子窗体。等待所有的AJAX呼叫比显示对话框
<div class='subform'>
//form fields
<input ...>
...
<button class='subform_submit'>
</div>
对于每个子窗体,我绑定这样子窗体上的提交按钮AJAX调用:
$('#main').on('click', '.subform_submit', function(){
// Get this subform's user input
...
$.ajax({
url: ..,
type: ..,
data: /* this subform's data */
});
});
因此,在该页面中,我可能取决于用户的选择0至10子窗体。 我在页面底部也有一个主要提交按钮,可以将这些子表单和主窗体的数据一起提交。
$('#main').on('click', '#submit', function(e){
$('.subform_submit').click(); // Submit each subform
bootbox.confirm({ });
})
一旦主点击提交按钮,我想显示加载图片,然后显示一个对话框,(我用bootbox.confirm()
这里),直到所有的Ajax调用已经完成。 此对话框告诉用户包括子表单在内的整个表单已提交。 但问题是每个AJAX调用可能需要2秒才能完成,我不知道可能的调用可能有待完成。我怎么能写这个主提交按钮,这样它会:
- 立即显示加载图像,并
- 隐藏加载图像,并显示对话框中的所有Ajax调用完成后?
感谢@Lewis最佳的解决方案! – monknom