2011-12-09 127 views
0

我有兩種形式。一個是模態彈出窗口,一個在頁面下面。我想同時使用此代碼提交他們:同時提交模態彈出窗體和另一個窗體

$('.window .submitlink').click(function (e) { 
    $('#form2').submit();        
    $('#form1').submit(); 
}); 

但有一個問題存在,那就是:它不會在form2動作處理頁面,它只是處理在form1行動。

順便說一下,我在wordpress中這樣做。有任何想法嗎?

+0

您可以在窗體的(其中一個)上設置「target」屬性,將提交指向框架或新頁面('_blank')。 –

回答

0

您需要使用每個表單的內容動態創建帖子。首先,您需要參數化表單,然後通過$ .post或$ .ajax發佈該數據。

例如: var data = {};

$('#form1 input').each(function() { 
    data[$(this).attr('name')] = $(this).val(); 
} 

$('#form2 input').each(function() { 
    data[$(this).attr('name')] = $(this).val(); 
} 
$.post('mytarget/address/topost/to', data); 

這假定您發佈到同一個地方。如果沒有,你將不得不使用單獨的$ .post語句。

0

HTML表單的默認行爲(您觸發.submit()的是在完成初始操作後立即執行表單的操作。要覆蓋該表單,必須採取措施使其按照您的意圖工作期望它,一個接一個地提交。

當前流程的挑戰在於,如果提交失敗,則不允許任何反饋。提交時沒有指示符允許視圖通知用戶這是一個問題,也沒有什麼可以防止第二個人在第一個失敗時盲目提交。

兩種方法可以嘗試ma ke發生這種情況:

  1. 合併表格。也許這違背了你的代碼設計,然而
  2. Nest Ajax提交。這允許您根據第一成功獲得動態的「反饋」到視圖和啓動/停止第二次提交,沒有默認動作覆蓋數2

一些注意事項:

  • 如果您在表單中使用按鈕,則默認情況下會提交表單,除非您執行「覆蓋默認」
  • 如果使用ajax路徑,請在表單上使用.serialize()以獲取值,而不必指定它們編號