私は送信ボタンを含むフォームを持っています。送信ボタンをクリックすると、確認のポップアップが表示されます。確認条件が満たされると、HTTPポストが行われます。しかし、時には投稿に時間がかかることがあります。このように、確認条件が満たされた後、投稿応答が返ってページが既に再読み込みされるまで、ロードGIFを表示したいと思います。javascriptで読み込みが完了するまで確認後gifを表示
答えて
私は、ある種のモーダルとして要素を使用して、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>
をEDIT:
は、上記のコメントを読んで、あなたのアプリケーションは、単一ページのアプリケーションではありません(私は仮定のように見えます今日)。代わりに、ボタンのクリックにイベントリスナーを取り付ける、あなたがそうのようなフォームにイベントリスナーを添付する必要があります。
またdocument.querySelector('#my-form-id').addEventListener('submit', event => {/*code to show loading*/})
、あなたはおそらくので、戻ってくるリクエストのイベントリスナーを追加する必要はありません新しい文書が現在の文書を置き換えます。
私はこれを打つつもりです!ありがとうございました! – slashnburn
@slashnburn上記のコメントを読んで、あなたのアプリケーションが単一のページアプリケーションではないように見えます。これで、イベントリスナーをフォームにアタッチする必要があります。ボタンのクリックにイベントリスナーを追加するのではなく、 'yourForm.addEventListener( 'submit'、event => {/ *ロードを表示するコード* /})'のように 'submit'イベントのフォームに追加します。また、新しい文書が現在のものを置き換えるため、戻ってくるリクエストにイベントリスナーを追加する必要はありません –
コメント内で述べたことを反映するための回答を更新しました –
- 1. Javascript:ちょうど表示する読み込みGIF
- 2. gifでカスタム読み込みダイアログを表示する
- 3. 画像読み込みがJavaScriptで完了するまで待つ
- 4. すべてのクリックが読み込み要素を完了したかどうかを確認するJavaScriptチェック:
- 5. Google Web Designer:initAd()の読み込みが完了したかどうかの確認
- 6. 表示ページにGIFを読み込んでいます - Iframe?
- 7. リストビューの読み込み中にGIFが読み込まれる
- 8. 表示レスポンス後にgifを読み込むVB.NET
- 9. アンドロイドウェブビューをバックグラウンドで読み込み、終了後に表示する方法
- 10. ページの表示方法ページの読み込みが完了するまでdivをロードしています
- 11. webviewの読み込みが完了するまでスプラッシュ画面を表示する方法。 objective-c
- 12. URLの読み込み完了後にローカルストレージを削除
- 13. Android - アクティビティの読み込みが完了した直後にアニメーションを表示する
- 14. アニメーション読み込みGIF
- 15. JSONコンテンツの読み込みが完了した後に追加のテキストが表示される:
- 16. ページの読み込み中にajaxの読み込みGIFアニメーションを表示するには?
- 17. javascript onclickイベントでGIFを読み込んで再生する
- 18. AJAXリクエストが完了する前にGoogleマップの読み込み
- 19. 非同期に読み込まれたスクリプトがJavaScriptで読み込みを終了したかどうかを確認する方法
- 20. ページの読み込みが完了するまでの待ち時間は?
- 21. Smart gwt。読み込みが完了したかどうかを確認する方法
- 22. JSファイルの読み込みが完了したかどうかを確認する方法は?
- 23. iframeの読み込みが完了したかどうかを確認する方法
- 24. UIWebViewの読み込み方法が完了しました
- 25. Webview Loading - コンテンツの読み込みが完了しました
- 26. JavascriptでJSONを読み込み/読み込みする 'id' = 'x'
- 27. ページの読み込み時にカスタムメッセージの確認を表示する方法は?
- 28. Selenium and Aurelia、ページの読み込みが完了するまでの待ち時間とHTTPコールの完了
- 29. htmlページの読み込み後のjavascriptの読み込み
- 30. JavaScript - 読み込まれたページを確認しますか?
ボタンがクリックされたときにイメージを表示するイベントハンドラを追加します。 – adeneo
そして、応答が戻ったときに別のイベントハンドラを追加してイメージを削除します。 ;) – cmac
簡単な例がありますか?確認のイベントハンドラはありません.. – slashnburn