2017-01-24 11 views
0

submit()がすぐに実行されず、次の数行のJavascriptがフォームが実際に送信される前に実行されるようなフォームを送信するときにタイミングの問題があるようです。form.submit()のタイミング問題

var eButtons = document.querySelector("#ContactUs_form #buttons"); 
 

 
function submitForm() { 
 
document.getElementById("ContactUs_form").submit(); 
 
\t eButtons.origInnerHtml = eButtons.innerHTML; 
 
\t eButtons.innerHTML = "Saving form..."; 
 
}
<form id="ContactUs_form" method="post" action="ContactUs.php" onsubmit="submitForm();"> 
 
\t <div id="buttons"> 
 
\t \t <input id="btnSubmit" name="btnSubmit" type="submit" value="Submit" class="fLeft"> 
 
\t \t <input id="btnReset" name="Reset" type="reset" value="Reset" class="fRight"> 
 
\t </div> 
 
</form>

提出()はすぐにフォームを送信されていない理由を任意のアイデア?

編集: 詳細については説明してください。フォームは提出されますが、すぐには送信されません。フォームが提出される前にeButtons.innerHTMLの置換が行われるため、最終的にフォームが送信されるときに、$ _POST( "btnSubmit")は含まれません。

+2

私はフォームを2回送信すると思います(submit.format.getElementById( "ContactUs_form"); submit;); submitForm関数内) –

+0

フォームの送信時に何が表示されますか? – andi

+0

あなたはフォームの自然な投稿を防ぐために何もしていません。 – j08691

答えて

1

JavaScriptはすべてをブロックします。ブラウザは、DOMを再描画したり、(イベントに応答して)別の機能を実行したり、現在の機能が実行を終了するまで新しいページにナビゲートしたりすることはありません。

いずれのナビゲーションも非同期です。ブラウザは、サーバが204 No Contentと答えたときに応答が到着するまで待つ必要があります。新しいページで応答が得られると、ページのアンロードが開始されます。

関連する問題