2016-11-30 105 views
0

我環顧四周,發現很多類似的答案,但表單提交我在我的代碼中失敗。什麼似乎失蹤或不正確,以防止表單提交時提交'按鈕被點擊並用SweetAlert確認?Resume Form PreventDefault後提交默認

http://plnkr.co/edit/NL7r4E9UKVjGSBbAwt86?p=preview

<form id='submissionForm' autocomplete='off' method='POST'> 
     <button>Save</button> 
     <input type='submit' name='submit' id='submitTest1' value='Submit 1'> 
     <input type='submit' name='submit' id='submitTest2' value='Submit 2'> 
    </form> 

點擊 「是的,我相信」,然後 「確定」 不提交表單。

UPDATE: 我已經簡化了代碼:http://plnkr.co/edit/A9aDycYhIkJcTmK5qIUS?p=preview

回答

3

表單元素有一個名爲submit的方法,但也具有表單中的表單元素作爲成員。

如果您有一個名爲submit的表格button,您可以使用document.form1.submit來訪問它。但是,由於與提交方法名稱相同,因此不再有任何方式訪問該方法。如果您使用該方法提交表單,那將不再有效。

使用此​​:

HTML:

<form id='submissionForm' autocomplete='off' method='POST'> 
     <button>Save</button> 

     <input type='submit' name='submit1' id='submitTest1' value='Submit 1'> 
     <input type='submit' name='submit2' id='submitTest2' value='Submit 2'> 
    </form> 
+0

vispan已經發現了這個問題。 –

+0

非常好!謝謝! – theflarenet

0

表單對象是一個普通的JavaScript對象,並沒有獲得jQuery的submit方法。

裹在一個jQuery表單對象包裝$(form).submit()

不知道香草JavaScript是一種要求,因爲我看到的jQuery被列入plnkr,但我使用jQuery的submit()方法,而不是JavaScript方法的測試,它的工作。

當您創建表單變量,使this一個jQuery對象var form = $(this);

+0

提交()也是一個標準的JS方法。 –

+0

確實如此,但是使用jQuery的submit方法提交表單。也許我應該改寫這個答案 – JB06

2

使用removeEventListener提交第二次之前刪除事件處理程序。

這是你更新的提琴:http://plnkr.co/edit/lXUtzlMISxztGVvucFQS?p=preview

正如在回答指出,事實上,你有一個名爲表單元素「提交」被重寫.submit()方法。您應該避免在提交按鈕中使用「提交」作爲名稱。改變它應該工作。

+0

有了這個,我仍然可以在控制檯上獲得'Uncaught TypeError:form.submit不是函數',當點擊成功消息的「OK」時 – empiric

+0

有趣!我試過了你的代碼,在SweetAlert的確認後,表單仍然沒有提交。 – theflarenet

+0

@theflarenet - 正如在另一個答案中指出的,提交名稱是問題。我已經更新了答案。 –