Ich habe ein Formular, das eine Schaltfläche Senden enthält. Nachdem auf den Absenden-Button geklickt wurde, erscheint ein Bestätigungs-Popup. Sobald die Bestätigungsbedingung erfüllt ist, findet ein HTTP-Post statt. Manchmal kann dieser Beitrag jedoch etwas dauern. Daher möchte ich ein Lade-GIF anzeigen, nachdem die Bestätigungsbedingung erfüllt ist, bis die Post-Antwort zurückkommt, wodurch die Seite bereits neu geladen wird.Display gif nach bestätigen, bis das Laden in Javascript
Antwort
Ich würde vorschlagen, ein Element als eine Art modal zu verwenden und dann die css-Eigenschaft visibility
auf und von hidden
und visible
zu setzen.
Dann können Sie Event-Handler zu Ihren Tastendrücken und Anforderungen hinzufügen, um dieses Element auszublenden oder anzuzeigen.
Siehe nachstehendes Beispiel:
const requestButton = document.querySelector('.request');
const yes = document.querySelector('.yes');
const no = document.querySelector('.no');
const confirmation = document.querySelector('.confirmation');
const loading = document.querySelector('.loading');
const content = document.querySelector('.content');
requestButton.addEventListener('click', event => {
confirmation.style.visibility = 'visible';
});
yes.addEventListener('click', event => {
// instead of a setTimeout, you'd actually make a request using `fetch` or jquery ajax
loading.style.visibility = 'visible';
confirmation.style.visibility = 'hidden';
window.setTimeout(() => {
// the code in this callback would be the same code you'd put in your `success` callback
// i.e. this code should run when the request finishes
loading.style.visibility = 'hidden';
const p = document.createElement('p');
p.innerText = 'Loaded!';
content.appendChild(p);
}, 2000);
});
no.addEventListener('click', event => {
confirmation.style.visibility = 'hidden';
});
.hidden-center {
position: absolute;
height: 100%;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
top: 0;
left: 0;
visibility: hidden;
}
.modal {
background-color: lightgray;
padding: 3em;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<div class="content">
<button class="request">load a thingy?</button>
</div>
<div class="confirmation hidden-center">
<div class="modal">
Are you sure?
<div>
<button class="yes">Yes</button>
<button class="no">No</button></div>
</div>
</div>
<div class="loading hidden-center">
<div class="modal">
<div>Loading...</div>
<i class="fa fa-spinner fa-spin fa-3x"></i>
</div>
</div>
EDIT:
die Kommentare oben Lesen, sieht es aus wie Ihre Anwendung nicht eine einzige Seite Anwendung ist (ich nehme nur heutzutage). Statt einen Ereignis-Listener auf den Knopf klicken Befestigung, müssen Sie den Ereignis-Listener Form befestigen, wie so:
document.querySelector('#my-form-id').addEventListener('submit', event => {/*code to show loading*/})
Auch Sie wahrscheinlich nicht brauchen, ein Ereignis-Listener für die Anforderung hinzuzufügen kommen zurück, weil Das neue Dokument wird das aktuelle Dokument ersetzen.
Ich gebe das eine Chance! Vielen Dank! – slashnburn
@slashnburn Lesen Sie die Kommentare oben, es sieht aus wie Ihre Anwendung ist keine einzelne Seite Anwendung (ich nehme nur heutzutage). Jetzt müssen Sie den Ereignis-Listener an das Formular anhängen. Anstatt den Ereignis-Listener zum Button-Klick hinzuzufügen, fügen Sie ihn wie folgt in das Formular des 'submit'-Ereignisses ein:' yourForm.addEventListener ('submit', event => {/ * code to show loading * /}) ''. Außerdem müssen Sie wahrscheinlich keinen Ereignis-Listener hinzufügen, wenn die Anfrage zurückkommt, weil das neue Dokument das aktuelle ersetzt. –
Die Antwort wurde aktualisiert, um das wiederzugeben, was ich im Kommentar gesagt habe –
- 1. Gruppe nach Datum, bestätigen, bis
- 2. Display Auswahlmenü in jQuery bestätigen
- 3. Display Loader, bis das Browser-Symbol sich dreht
- 4. Entfernen Laden gif nach window.location hat
- 5. Zeige laden gif nach dem Klicken Formular senden mit jQuery
- 6. Laden gif auf Seite loading
- 7. Wie GIF-Bild für das Laden geben, bis Antwort von Backend kommt
- 8. eine Ladeanimation bis zu einem bestimmten Javascript Finish Laden hinzufügen
- 9. Laden und spielen Sie ein gif mit Javascript onclick Ereignis
- 10. Animieren von Gif in Javascript
- 11. Führen Sie Javascript nach gif voll mit jQuery
- 12. versuchen, einen Laden gif in CSS erstellen
- 13. Javascript bestätigen verhindert Bildschirmaktualisierung in Chrome
- 14. Laden GIF auf Normalform einreichen
- 15. jQuery Ersatz für Javascript bestätigen
- 16. Javascript Chrome bestätigen Box Verzögerung
- 17. Mein Laden GIF-Animation nicht funktioniert
- 18. flex 3 animiertes gif für das Laden von Datagrid
- 19. Laden von Javascript-Datei nach jquery.ready
- 20. Starten Sie ein animiertes GIF von JavaScript, ohne das Bild neu zu laden
- 21. Warten, bis das Bild zum Laden der Seite im Winkelmesser auf der nicht-eckigen Seite verschwindet
- 22. Display-Spannungsklasse in nach der eingestellten Zeit
- 23. Bestätigen Sie in bestätigen
- 24. Knockout Klickbindung mit Javascript bestätigen
- 25. Javascript Leinwand zeichnen Text nach Laden Schriftart
- 26. Javascript onclick display modal
- 27. JavaScript, wie zu bestätigen Methode
- 28. Display-Menü nach Bildschirmauflösung
- 29. Display 'Loading' Frame bis der Hintergrundprozess beendet
- 30. Interpunktion laden "Animation", Javascript?
Fügen Sie einen Ereignishandler hinzu, der das Bild anzeigt, wenn auf die Schaltfläche geklickt wird. – adeneo
Fügen Sie dann einen weiteren Ereignishandler hinzu, um das Bild zu entfernen, wenn die Antwort zurückkommt. ;) – cmac
Können Sie ein einfaches Beispiel geben? Es gibt keinen Event-Handler auf der Bestätigung. – slashnburn