2017-02-24 4 views
0

Ich habe ein paar Posts gesehen, die bereits versuchen, ein Formular mit jquery in Firefox einzureichen, aber ich kann keine dieser Lösungen in meinen Formularen finden.jQuery-Form .submit(); funktioniert nicht in Firefox

Ich habe zwei Formulare auf meiner Seite und was ich versuche ist, sie beide gleichzeitig einzureichen. Ich habe zur Zeit den ersten Button, der das Formular Nr. 2 einreicht und wenn Formular Nr. 2 eingereicht wird, dann füge das Formular Nr. 1 ein. Ich muss es so haben, weil der Ort, an dem ich diese Formulare hosste, eine Seitenumleitung benötigt. Ich kann nicht beide Formulare senden, wenn beide umleiten, also sende ich Formular 2 ein, sperre die Weiterleitung und sende Formular 1.

Beide Formulare senden und veröffentlichen Daten perfekt in Chrome und IE, aber ich kann nicht das Formular mit der Bezeichnung "form2" erhalten, um die Daten bei der Verwendung von Firefox zu veröffentlichen. Warum verbucht form1 die Daten, aber form2 veröffentlicht die Daten nicht, wenn ich Firefox verwende?

Hier ist meine 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 Senden wenn form2 ist abgeschlossen einreichen? Meinst Du das? –

+0

Ja, wenn form2 gesendet wurde, dann sollte form1 übergeben werden. Ich habe versucht, dies in der Ajax komplett zu erreichen, aber es hat nicht funktioniert, also musste ich es herausziehen und es auf den Boden legen, wie Sie sehen können – cgrouge

+0

Es sollte im Ajax-Erfolg sein, einfach so - wenn das didn ' t Arbeit müssen Sie Ihren Code zeigen, weil das der richtige Weg ist, dies zu tun - es sei denn, Sie wollen Versprechungen verwenden, aber ich würde dies zuerst versuchen –

Antwort

0

Versuchen Sie dies, werden wir Versprechen verwenden:

/* 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/') 
}); 
Verwandte Themen