2011-05-16 56 views
2

我需要一些代碼在提交按鈕被點擊之後並且在表單實際提交之前運行。 我已經剝離了代碼,只留下了顯示問題所需的部分。 我需要的代碼是去提交函數,但不是提交表單再次調用函數。 表單只應在第二次迭代中提交。 除外。代碼完全按照它應該執行的方式執行,但表單最終沒有提交。遞歸jQuery提交功能不提交表格

如果有人能解釋爲什麼,我將不勝感激。

下面的代碼(simplr-REG的窗體的名稱):

​​
+0

你怎麼知道它沒有提交? – Neal 2011-05-16 20:21:00

+0

@Neal,我正在使用一個WordPress網站註冊插件,當表單提交時,我收到一條消息,表明它已成功提交。在這種情況下,我不這樣做。我還檢查數據庫以查看是否添加了新記錄。 – Ash 2011-05-16 20:56:04

回答

3

更改它從一個「提交」事件的「click」事件,並將其附加到按鈕本身,而不是形式?

ETA:請務必在未提交的案例中「返回false」。

$("#simplr-reg-submit").click(function() 
{  
     alert("1st iteration"); 
     $("#simplr-reg").submit(); 
     return false; 
}); 
+1

對於他來說,爲按鈕添加點擊事件可能會更好(任何不會自動提交的事件),然後在完成其他功能後只需調用表單提交事件。不需要使其成爲「遞歸」 – jacobangel 2011-05-16 20:28:24

+0

確實如此,但如果一切已經創建(即自動生成的形式),請單擊w/return false即可。 – SickHippie 2011-05-16 20:34:17

+0

http://jsfiddle.net/fcgJV/ – kei 2011-05-16 20:38:39

4
$("#simplr-reg").submit(); 

,說: 「叫上了jQuery選擇submit方法」。你有一個綁定到選擇的jQuery submit處理程序。既然你已經觸發了jQuery選擇的事件,那麼jQuery處理程序也會被觸發。

如果您在本機DOM表單對象(提交處理程序中的this)上觸發事件,那麼jQuery處理程序將不會被觸發,因此您不會繞圈。撥打form.submit方法:

this.submit(); 
+0

@ lonesomeday,謝謝。它似乎與我在問題中顯示的代碼一起工作。但是在我的完整代碼中,第一個提交函數調用了另一個函數,最後我應該調用第二個提交函數。但它不承認那裏的'這個'運營商。我能做什麼? – Ash 2011-05-16 21:30:19

+0

@Ash'$('#simplr-reg')。get(0).submit();'''get'](http://api.jquery.com/get)檢索本地DOM元素,所以你可以調用本地'submit'方法。 – lonesomeday 2011-05-16 21:33:45

+0

@lonesomeday,它仍然沒有提交。我已經把腳本放在這裏(http://www.mediacoverages.com/newscript/),如果你可以看一看,那將是非常棒的。另一個名爲「codeAddress」的功能是黃色的,但不需要全部通過。就在它結束的地方,我再次提交提交。 – Ash 2011-05-16 21:55:09