【发布时间】:2015-12-22 15:51:21
【问题描述】:
我正在开发一个动态在线表单网站。在主窗体中,我有多个可以动态添加和删除的子窗体。
<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 最佳解决方案!
标签: javascript jquery ajax bootbox