Sto lavorando a un sito Web di modulo online dinamico. Nel modulo principale, ho più sotto-forme che possono essere aggiunte ed eliminate dinamicamente.In attesa di tutte le chiamate AJAX che mostrano la finestra di dialogo
<div class='subform'>
//form fields
<input ...>
...
<button class='subform_submit'>
</div>
Per ciascun sottomodulo, mi legano una chiamata AJAX sul pulsante di invio della sottomaschera in questo modo:
$('#main').on('click', '.subform_submit', function(){
// Get this subform's user input
...
$.ajax({
url: ..,
type: ..,
data: /* this subform's data */
});
});
Quindi, in quella pagina, io possa avere da 0 a 10 sottomoduli a seconda della scelta dell'utente. Ho anche un pulsante di invio principale nella parte inferiore della pagina, che può inviare le sottomaschere ei dati del modulo principale insieme.
$('#main').on('click', '#submit', function(e){
$('.subform_submit').click(); // Submit each subform
bootbox.confirm({ });
})
Una volta che il pulsante principale inviare viene cliccato, voglio mostrare un quadro di carico e poi mostrare una finestra di dialogo (io uso bootbox.confirm()
qui) fino a quando tutte le chiamate AJAX hanno completato. Questa finestra di dialogo indica all'utente che è stata inviata tutta la forma, inclusi i moduli secondari. Ma il problema è che ogni chiamata AJAX può richiedere 2 secondi per essere completata e non so in che modo le chiamate potrebbero essere in attesa di completamento. Come faccio a scrivere questo tasto principale sostengono in modo che lo farà:
- Mostra il caricamento delle immagini immediatamente e
- nascondere l'immagine di carico e mostrare la finestra di dialogo dopo che tutte le chiamate AJAX hanno completato?
Grazie per @Lewis migliore soluzione! – monknom