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;
}

results matching ""

    No results matching ""