form.submit()的时间问题

时间:2017-01-24 20:56:55

标签: javascript forms

在提交表单时,如果提交()没有立即运行,并且接下来几行Javascript在实际提交表单之前运行,似乎有时间问题。

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

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

为什么submit()没有立即提交表单的任何想法?

编辑: 应该更充分地解释,表格已经提交但不是立即提交。 eButtons.innerHTML替换发生在表单提交之前,因此当表单最终被提交时,它不包含应该执行的$ _POST(“btnSubmit”)。

1 个答案:

答案 0 :(得分:1)

JavaScript阻止了一切。浏览器不会重新绘制DOM,运行另一个函数(例如,响应事件)或导航到新页面,直到当前函数执行完毕。

无论如何,任何导航都是异步的。如果服务器显示204 No Content,浏览器必须等到响应开始到达。只有在获得新页面的响应后,页面才会开始卸载。