<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
爲什麼在validateForm()
之前必須有return
?提交表單進行JavaScript驗證函數調用之前的返回是什麼?
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
爲什麼在validateForm()
之前必須有return
?提交表單進行JavaScript驗證函數調用之前的返回是什麼?
如果您不使用return
,則Javascript將調用validateForm
,但會丟棄返回值。
如果onsubmit
返回false
表單將不會被提交。
如果onsubmit
函數返回false
,則可以停止<form>
的默認提交操作。
onsubmit
屬性的值被視爲一個函數體,因此需要return
,以便表單在無效時不會被提交。
不完全是。返回false和返回另一個函數的返回值沒有區別,這恰好是錯誤的。 這更多的是代碼的inline eval()。 – Norguard 2012-07-19 20:16:41
@Norguard:你想說什麼?我沒有關注。 – 2012-07-19 20:18:09
對不起,我的大腦正在融化。 我打算說的是,如果驗證函數沒有寫成明確返回'false',並且還有其他方法來實現該值,則onclick函數的返回值仍然會提交表單。在這種情況下,您可以假設您正在查看別人代碼的「validate」函數的返回值爲100%,但對於剛剛編寫第一個函數的人來說,他們可能會發出警報,或者返回任何假的,而不是完全錯誤的。 – Norguard 2012-07-19 20:33:43
基本上,正在發生的事情是在線處理是這樣的:
<button id="submit-button" type="submit" onclick="return validate()"></button>
var button = document.getElementById("submit-button");
button.onclick; // function() { return validate(); }
對戰:
<button id="submit-button" type="submit" onclick="validate(event)"></button>
var button = document.getElementById("submit-button");
button.onclick; // equals function (event) { validate(event); }
但是,也可以使用完全有效的事件處理函數來傳遞,具體取決於驗證函數的寫法。 – Norguard 2012-07-19 20:28:48