我有一個包含Submit按鈕的表單。點擊提交按鈕後,出現確認彈出窗口。一旦滿足確認條件,就會發生HTTP帖子。但是,有時候這篇文章可能需要一段時間。因此,我希望在滿足確認條件後顯示加載gif,直到回覆帖子,從而頁面已經重新加載。確認後顯示gif,直到加載完成爲javascript
回答
我會建議使用某種模式的元素,然後設置css屬性visibility
往返hidden
和visible
。
然後,您可以將事件處理程序添加到按鈕按下並請求隱藏或顯示此元素。
請參見下面的例子:
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>
編輯:
閱讀上述評論,它看起來像你的應用程序是不是一個單一的網頁應用程序(我只是假設如今)。相反,事件偵聽器連接到按鈕點擊,您需要將事件偵聽器附加到表單,像這樣:
document.querySelector('#my-form-id').addEventListener('submit', event => {/*code to show loading*/})
而且,你可能並不需要添加的事件偵聽器回來,因爲請求新文件將取代目前的文件。
我會給這個鏡頭!謝謝! – slashnburn
@slashnburn閱讀上面的評論,它看起來像你的應用程序不是一個單一的頁面應用程序(我現在假設)。現在您需要將事件偵聽器附加到表單。而不是將事件監聽器添加到按鈕單擊中,而是將其添加到'submit'事件的表單中,如下所示:'yourForm.addEventListener('submit',event => {/ * code to show loading * /})''。此外,您可能不需要在請求返回時添加事件偵聽器,因爲新文檔將替換當前的文檔 –
更新了答案,以反映我在評論 –
- 1. 如何顯示等待gif,直到圖像完全加載
- 2. 顯示'正在加載'框架,直到後臺進程完成
- 3. UIActivityIndicatorView直到加載完成後才顯示
- 4. 如何顯示加載圖像(GIF),直到腳本功能完成
- 5. 如何顯示加載屏幕,直到完成asynctask加載
- 6. 顯示加載gif,直到所有圖像加載?
- 7. ProgressDialog直到AsyncTask完成後才顯示
- 8. 顯示加載GIF
- 9. AS3加載完成後顯示圖像
- 10. 加載完成後顯示HTML頁面
- 11. 顯示加載GIF或等待消息,直到servlet的負載
- 12. 顯示頁面加載gif在javascript
- 13. jQuery自動完成:如何顯示動畫GIF加載圖像
- 14. 顯示在response.redirect後加載gif VB.NET
- 15. 顯示加載條直到完成方法
- 16. 顯示啓動畫面,直到應用完成加載
- 17. 如何顯示busy遊標直到iframe加載完成?
- 18. Angular js:顯示錯誤信息,直到頁面加載完成?
- 19. jquery頁面加載,頁面持續卡住,直到頁面完全加載,而不是顯示加載gif
- 20. 加載動畫顯示不出來,直到Ajax調用完成後
- 21. ajax完成後的jQuery .load()函數。不顯示圖像,直到100%加載
- 22. 如何顯示加載gif直到刪除?
- 23. 顯示加載圖標/ gif,直到從api返回的結果
- 24. 顯示正在加載圖像,直到內容完全加載
- 25. 顯示加載頁面加載GIF - iframe?
- 26. iPhone SDK - 直到後臺任務完成後才顯示圖像
- 27. 如何顯示加載gif圖像預覽通過javascript加載
- 28. 顯示加載GIF並刪除腳本加載後
- 29. Javascript:只是不能得到一個加載GIF來顯示
- 30. 網站加載到右側,直到完成,然後中心
添加一個事件處理程序,用於在單擊按鈕時顯示圖像 – adeneo
然後添加另一個事件處理程序以在響應返回時刪除圖像。 ;) – cmac
你能提供一個簡單的例子嗎?確認沒有事件處理程序.. – slashnburn