このためには、 event.preventDefault();を使用して、(フォームを送信するための) デフォルトの動作をキャンセルするボタンの onclick を起動する関数を作成する必要があります。その後、基本的にボディに div を追加し、(CSS を介して) 3 秒間表示される中央の読み込み gif を設定します。DIV を事前に挿入することもできるため、もう追加する必要はありません。
私が理解していないことがいくつかあります。あなたの質問から、読み込み中の gif を 3 秒間表示したいことがわかります。これは非常に長く、その後で実際にフォームの処理を開始したいと考えています。
この場合、AJAX を使用してリクエストを透過的に処理することを強くお勧めします。たとえば、ページのリロードがなく、送信時に 3 秒の遅延がありません。
また、ユーザーが JS を無効にしている場合は、フォームが即座に送信される PHP フォールバックを使用できます (ユーザーは 3 秒も待ちたくないでしょう)。
これはおそらく最もユーザーフレンドリーな方法です。プレーン JS で AJAX リクエストを実装する方法について質問がある場合は、この質問にコメントしてください。必要に応じて編集します。
‐ シド