2011-04-30 49 views
0

我試圖提交使用jQuery一種形式,它工作得很好,直到我不得不添加一個確認窗口,以便用戶可以查看提交之前他們的數據,下面的代碼:jQuery的生活在無限循環提交caugth

$("#create-group-form").live('submit', function(e){ 
    e.preventDefault(); 
    var form = $(this); 
    jConfirm('Here I display the group info...', 'Confirm Group', function(r){ 
     if (r) { 
      form.submit(); 
     } 
    }); 
}); 

我爲jQuery使用jAlert插件,但它的工作原理與不同樣式的常規確認提示一樣,問題是當用戶在提示中單擊確定時,它會再次進入實時提交,並陷入無限循環。

確認後有沒有辦法阻止它再次進入此事件?我想我可以以某種方式解除綁定,但是我還沒有找到成功的方法。

順便說一句我正在使用實時提交,因爲窗體在模態窗口中。

在此先感謝!

+0

模態窗口,那又如何?一旦DOM準備好了,元素也是如此,你可以綁定提交事件 - 即使表單不顯示... – davin 2011-04-30 16:59:32

回答

9

調用表單元素的submit方法,而不是jQuery選擇的方法。這意味着jQuery處理程序不會被觸發:

$("#create-group-form").live('submit', function(e){ 
    e.preventDefault(); 
    var form = this; // <-- this line changed 
    jConfirm('Here I display the group info...', 'Confirm Group', function(r){ 
     if (r) { 
      form.submit(); 
     } 
    }); 
}); 
+0

我試了一下,但後來它將我重定向到表單的動作,但數據沒有提交:( – javiervd 2011-04-30 17:39:09

+0

@javierd你能展示一些真實的代碼嗎? – lonesomeday 2011-04-30 17:40:31

+0

沒關係,這工作的問題是我在操作一些數據之前插入另一個提交句柄,因爲本地繞過這個數據沒有得到清理,因此沒有插入。非常感謝! – javiervd 2011-04-30 18:11:56

1

這將取消綁定您的事件處理函數,然後再次調用submit()

$("#create-group-form").live('submit', function(e){ 
    e.preventDefault(); 
    var form = $(this); 
    jConfirm('Here I display the group info...', 'Confirm Group', function(r){ 
     if (r) { 
      form.unbind('submit'); 
      form.submit(); 
     } 
    }); 
}); 
+0

試過了,但它沒有工作,很奇怪.. – javiervd 2011-04-30 17:38:09

+0

@javiervd或者,包括提交時修改的變量,用於確定是否再次顯示確認。 – alex 2011-04-30 17:39:05

0

更換窗體上具有button標籤與像#psuedo-submit一個ID提交按鈕。當點擊#psuedo-submit時,彈出模式窗口,並在確認時進行實際提交。