1. 程式人生 > >form.submit 方法 並不會觸發 form.onsubmit 事件

form.submit 方法 並不會觸發 form.onsubmit 事件

undefined action value 一個 font var 提交按鈕 測試 事件

做表單的時候發現一個奇怪的地方,總結下:

form.submit 方法 並不會觸發 form.onsubmit 事件,看代碼:

<body>
    <div class="container">
        <form action="http://route.showapi.com/213-1" method="POST">
            <input type="text" value="ssss">
            <button type="submit">提交</button>
        </
form> </div> <script> var form=document.forms[0]; var btn=form.getElementsByTagName(button)[0]; form.onsubmit=function(event){ var e = event||window.event; alert(e); };
        form.submit();
    </script>
</body>

如題,一打開網頁,並沒有 alert() ,而是直接提交表單了,也就是說,form.submit 方法 並不會觸發 form.onsubmit 事件 ,FF 和 chrome 測試都一樣,解決辦法:

把 form.submit(); 改成提交按鈕的 click 事件,上題就是把最後一句代碼改成:

btn.click();

可能有的人不想這麽做,會想把 form.submit() 改成 form.onsubmit() ,但是這個邏輯就錯了,不信你試試???

解析:fomr.submit() 是在調用 form 的 submit 方法(默認的方法),而 form.onsubmit() 是在調用 form 的 onsubmit 方法(你在前面指定的),這個時候就獲取不到 event 對象了,獲取的 undefined

但是如果不是 submit 事件,換成 click 倒是正常的,所以這個特例需要註意下,如果有人發現原因了,感謝告知呀 !

form.submit 方法 並不會觸發 form.onsubmit 事件