我正在开发一个动态在线表单网站。在主表单中,我有多个子表单,可以动态地添加和删除。
<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调用完成后隐藏加载图像并显示对话框?