form submit
之前遇到一個很蠢的問題,害我浪費了很多時間。
<form name="ooo" action="xxxx">
<input type="text" name="name">
...
<input type="submit" value="Submit" name="submit">
</form>
這段 HTML 乍看下沒甚麼問題,但如果要用 javascript 對 submit 做動作的話。
document.ooo.submit();
// Uncaught TypeError: document.ooo.submit is not a function
document.ooo.submit
// <input type="submit" value="Submit" name="submit">
會有這個錯誤,心想為甚麼不能直接用 js 做 submit,原來是因為 submit 的 name 也叫 "submit" ,form 的 submit function 給 override了。
到底是誰用 submit 當 name 使用!!!
額外發現:
<script>
function sub () {
console.log(123);
return false;
}
</script>
<form action="test.asp" onSubmit="sub()">
<input type="submit">
</form>
這樣的 return false 無法擋掉 submit 的動作,必須用 e.preventDefault(); 的方式才能阻擋 submit 的動作。
function sub (e) {
e.preventDefault();
console.log(123);
return false;
}