2017-08-13 483 views
0

我有一個表格如下圖所示:爲什麼submit()方法沒有觸發onsubmit事件?

<form action="/action_page.php" onsubmit="alert('The form was submitted');" > 
    Enter name: <input type="text" name="fname"> 
    <input type="button" onclick="document.getElementsByTagName('form')[0].submit()" value="Submit"> 
</form> 

雖然我點擊了按鈕,實際上它提交表單,但沒有顯示的alert框。也就是說,submit()方法提交了表單,但沒有觸發onsubmit事件。發生了什麼?我應該如何使用submit()方法觸發onsubmit事件?

+0

你需要添加一個輸入類型的提交按鈕,當你點擊它,那麼只有你的onsubmit將被自動觸發。 添加以下元素到您的html並點擊它 ''input type =「submit」value =「Submit」/>''' –

+0

btw您可以簡單地使用'document.forms [0]'或者在表單的情況下元素在你的代碼中,this.form' – inarilo

+0

因爲它的一個按鈕。它會觸發onclick。在onclick中,您通過javascript提交了表單。您可以嘗試將其更改爲輸入類型提交以查看是否有任何區別。在這種情況下,你不需要調用通過javascript.https://www.w3schools.com/jsref/event_onsubmit.asp提交。 – Amit

回答

1

那麼,documentation for the submit method很清楚,它不會觸發onsubmit。

由於以下任何形式的元素引起形式提交:

<input type='submit'> 
<input type='button'> 
<button> 

你可能根本就不

0

需要那個按鈕的onclick處理似乎你不能,請檢查這個帖子 - https://stackoverflow.com/a/19847255/8449863

然而

,請嘗試解決方法有隱藏的提交按鈕:

<form action="/action_page.php" onsubmit="alert('The form was submitted');" > 
    Enter name: <input type="text" name="fname"> 
    <input type="button" value="Submit" onclick="document.getElementById('submit').click();" > 
    <input id="submit" type="submit" style="display: none;" /> 
</form>