it-swarm.com.de

Nur IE11-Fehler beim Senden

Ich habe ein Formular auf einer Seite, etwas einfaches wie:

<form action="form/submit" method="post">
    <button type="submit">Submit</button>
</form>

Es funktioniert in jedem einzelnen Browser, einschließlich älterer Versionen von IE, aber in IE11 schlägt es fehl. Die Registerkarte bleibt in einer fortlaufenden Ladeschleife hängen und wechselt nach der Übergabe nie zur Danke-Seite. Aber wenn ich die Konsole öffne, funktioniert es. 

Ich kenne die Probleme mit der console.log IE und verwende bereits:

if (!window.console) {
    console = {
        log: function() {}
    };
}

um dies zu vermeiden, scheint es gut zu gehen (wie gesagt, jeder andere IE funktioniert). Irgendwelche Einsichten, wo das Problem liegen könnte?

23
Brian

Das Problem tritt auf, wenn ein Formular nur Eingabeelemente ohne name-Attribut (oder keine Eingabeelemente) enthält. Ich habe hier einen Hinweis auf den Fehler gefunden, der jedoch auch im Desktop-Modus und nicht nur im Metro-Modus auftritt, wie der Link behauptet:

http://connect.Microsoft.com/IE/feedback/details/807447/ie-11-metro-version-subitting-form-fails-if-input-tag-has-no-name-attribute

Das Update besteht darin, vor dem Absenden des Formulars ein <input type="hidden" name="dummy" value="something">-Dummy-Feld (mit einem Namen und Wertesatz) zu erstellen.

Der Fehler tritt in allen von IE11 angebotenen Kompatibilitätsmodi auf.

30
pilif

Ich habe einfach zu viel Zeit mit diesem Fehler verbracht. Der verrückte Teil ist, IE11 erlaubt die Formularübergabe, wenn Sie die Dev-Tools (F12) geöffnet haben. Dies ist, was ich vor meinem Submit-Button stecke

<input type="hidden" name="ie11sux" id="ie11sux" value="<?php echo md5(microtime()."ie11sux"); ?>"/>
10
user3137534

Es ist ein Fehler in IE11. Sie können das Problem beheben, wenn Sie der Schaltfläche ein Namensattribut hinzufügen, z.

<button type="submit" name="foo" ...
9
Alex Baban

Ein Formular ohne benanntes Element führt beim Senden auf IE11 + W8.1 zu einer Endlosschleife. Um dies zu beheben, fügen Sie der Schaltfläche einfach ein Attribut name hinzu:

<form action="form/submit" method="post">
  <input type="submit" name="cm" value="Submit">
</form>
6
Toto

Dies bezieht sich nicht direkt auf die Frage von OP, sondern ist ein Problem, das ausschließlich im IE vorliegt.

Wenn Sie form.prop('disabled', true) während des Submit-Ereignisses festlegen, werden die Formulardaten zwar von anderen Browsern gesendet, aber IE nicht. Es wird ein leerer Anfragetext gesendet.

4
Kevin Qi

Ich hatte leere versteckte Felder, die als erforderlich gekennzeichnet waren. Ziemlich blöd, aber es war die Lösung, die für mich funktionierte.

0
Jake Cattrall

Für IE11 gibt es:

event.returnValue = false;

Das Überprüfen, ob event.preventDefault existiert, verhindert einen eventuellen Fehler:

event.preventDefault ? event.preventDefault() : (event.returnValue = false);
0
DependencyHell