2017-02-24 111 views
0

我已經看到幾個帖子已經試圖提交與Firefox中的jQuery表單,但我不能得到任何這些解決方案在我的形式工作。jQuery form .submit();不在火狐工作

我在頁面上有兩種形式,我想要做的是同時提交它們。我目前有第一個提交表格#2的按鈕,當提交表格#2時提交表格#1。我必須這樣做,因爲我託管這些表單的地方需要頁面重定向。如果兩個表單都重定向,我無法提交這兩個表單,因此我提交表單#2,阻止重定向,然後提交表單#1。

這兩種表格都在Chrome和IE中完美地提交和發佈數據,但在使用Firefox時,我無法獲得標有「form2」的表單來發布數據。爲什麼form1發佈數據,但是當我使用Firefox時,form2不會發布數據?

這裏是我的jsfiddle

/* trigger second form submit when clicking first form submit */ 
// form 1 button submits form 2 
$('#submitform1').click(function() { 
    $('#form2').submit(); 
}); 

//on form 2 submit, stop the confirmation page and don't run a function on completion 
$('#form2').submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
    type: 'post', 
    url: 'url', 
    data: $('#form2').serialize(), 
    complete: function() {} 
    }); 
}); 

//when form2 submits, submit form 1 
$('#form2').submit(function() { 
    $('#form1').submit(); 
}); 
+0

提交form1的窗體2時提交完了?你是這個意思嗎? –

+0

是的,當form2已經提交然後form1應該提交。我嘗試在ajax中完成這個工作,但它不工作,所以我不得不將它拉出並放在底部,因爲你可以看到 – cgrouge

+0

它應該在ajax的成功中,就這麼簡單 - 如果沒有,你需要展示你的代碼,因爲這是正確的方式來做到這一點 - 除非你想使用承諾,但我會嘗試這第一 –

回答

0

試試這個,我們將使用承諾:

/* create a function to submit the forms */ 
function formSubmit(el, url) { 
    $.ajax({ 
     type: 'post', 
     url: url, 
     data: el.serialize(), 
     complete: function() {} 
    }); 
} 

/* now we say, when first form has been submitted, submit the next */ 
$.when(formSubmit($('#form2'), 'http://myAjaxUrl2/')).then(function() { 
    formSubmit($('#form1'), 'http://myAjaxUrl1/') 
});