2014-07-10 18 views
14

Es gibt mehrere Fragen/Antworten zu diesem here, here und here und anderswo, aber sie scheinen alle JQuery spezifisch und erscheinen nicht auf diese anzuwenden (zum Beispiel bin ich NICHT Erstellen eines neuen Formularobjekts, dies ist ein vorhandenes Formular im Dokument.Auch ich bin NICHT mit Jquery überhaupt).Javascript form.submit() nicht in Firefox arbeiten

Ich habe ein Formular, das vor der Einreichung aus Gründen der IE7-Kompatibilität geändert werden muss. Ich muss alle BUTTON Tags aus meinem Formular entfernen und dann ein verstecktes Feld hinzufügen, aber das ist alles in einem vorhandenen Formular auf der vorhandenen HTML-Seite. Dieser Code funktioniert ordnungsgemäß in IE und Chrome, funktioniert aber nicht in Firefox (Versionen 23 & 24 beide getestet).

buttonClickFunction(formName, buttonObject) { 
     var formObject = document.forms[formName]; 
     var i = 0; 

     // Strip out BUTTON objects 
     for (i=0;i<formObject.length;i++) { 
      if (formObject[i].tagName === 'BUTTON') { 
       formObject[i].parentNode.removeChild(formObject[i]); 
       i--; 
      } 
     } 

     // Create new field 
     var newField = document.createElement('input'); 
     newField.type = 'hidden'; 
     newField.id=buttonObject.id; 
     newField.name = buttonObject.name; 
     if (buttonObject.attributes['value'] != null) { 
      newField.value = buttonObject.attributes['value'].value; 
     } else { 
      newField.value = buttonObject.value; 
     } 

     // Submit form 
     formObject.appendChild(newField); 
     document.forms[formName].appendChild(newField); 
     document.forms[formName].submit(); 
    } 

Neben dem document.forms[formName].submit() ich auch formObject.submit() versucht haben - beide arbeiten in Chrome aber beide nicht in Firefox. Ich bin ratlos, warum das nicht funktioniert - ich habe durch die JS verfolgt und sah, dass document.forms[formName].submit() ausführen - keine Ausnahme erscheint, aber nichts geht an den Server.

Kann jemand identifizieren, warum Firefox dieses Formular nicht einreicht, und wie ich es beheben kann?

Antwort

18

Firefox erwartet, dass, wenn Sie ein Formular einreichen, müssen Sie mindestens eine Schaltfläche zur Verfügung einreichen, sollte es Sinn so etwas wie:

<button type="submit">Click me</button> 

oder:

<input type="submit" value="Click me" /> 

Wenn Sie die Verwendung Die erste in Ihrem Code wird nicht funktionieren (weil Sie alle Schaltflächen vor dem Absenden des Formulars ausziehen). Wenn Sie die zweite Option verwenden, wird es auch in Firefox funktionieren. Wie Sie in dieser Geige sehen: http://jsfiddle.net/q9Dzc/1/

+0

Dies stellte sich als das Problem - Firefox wird anscheinend kein Formular ohne irgendwelche Tasten senden. Nicht sicher, warum das so ist oder ob dies "absichtliches" Verhalten ist. – user3120173

+0

Es ist so seit Ewigkeiten, also wenn das nicht beabsichtigt war, dann hätten sie es wahrscheinlich schon repariert. Der einzige Grund, warum ich das weiß, ist, dass ich einmal ein ähnliches Problem hatte (vor mehr als 2 Jahren: p) – g00glen00b

+1

Vielen Dank - ich hätte das ohne Sie nicht reparieren können. – user3120173

0

Für alle ein Problem mit mit der Herstellung der Firefox mit der Seite eintragen Ändern/Nachladen danach, müssen Sie Ihre Umleitung Code in dem $ .post Rückruf setzen:

$(".form").submit(function(e){ 
    e.preventDefault(); 
    $.post("submit.php", {data: textData}, function(){ 
     history.go(-1); 
    }); 
    return false; 
}); 
Verwandte Themen