6

Ich habe dieses HTML-FormularIE 11 nicht ein HTML-Formular

<form name="nextform" action="anotherpage.php" method="post" enctype="multipart/form-data"> 
    <input name="pinid" id="pinid" type="hidden"> 
    <input type="submit" name="submit" id="post" value="Lets Go" class="formButtonMap"> 
</form> 

pinid wird dynamisch ein Wert mit JavaScript muss. Wenn es einen Wert bekommt, warne ich es und es funktioniert.

Aber wenn ich auf die Schaltfläche Lets Go klicke, passiert nichts. Ich sehe den Internet Explorer für ein paar Minuten geladen und dann bekomme ich die Meldung "Die Webseite reagiert nicht". Wenn ich auf Aktualisieren klicke, geht es zu anotherpage.php, aber die Werte aus dem Formular sind nicht auf dem Server angekommen.

zeigt Selten diese Meldung:

Visual Studio Just-In-Time-Debugger

Eine nicht behandelte win32 Ausnahmeoccured in iexplorer.exe [688]

Mögliche Debuggers:

Neue Instanz von Microsoft Visual Studio 2012

Dieses Verhalten wird nur in Internet Explorer 11.0.2 beobachtet. Das Formular funktioniert in älteren Versionen von Internet Explorer und auch in Chrome und Firefox. Ich bekomme keine Fehler in der IE-Konsole.

Hier ist der JavaScript-Code, über die Form gelegt:

// called when another button is clicked - basicaly is websockets 
function save() { 
    var so = new WebSocket("ws://localhost:8000"); 
    so.onerror = function (evt) { 
     alert('problem'); 
    } 

    if (sara == 'LINES') { 
     so.onopen = function() { 
      so.send(JSON.stringify({ 
       command: 'insertAll', 
       name: document.getElementById('name').value 
      })); 
     } 
    } 

    if (sara == 'POLY') { 
     so.onopen = function() { 
      so.send(JSON.stringify({ 
       command: 'insertHalf', 
       name: document.getElementById('name').value 
      })); 
     } 
    } 

    so.onmessage = function (evt) { 
     var received_msg = evt.data; 

     document.getElementById("next").style.display = "block"; 
     document.getElementById("name").value = ""; 
     document.getElementById("descr").value = ""; 
     clearLinks(); 

     document.getElementById("pinid").value = received_msg; 
     alert(document.getElementById("pinid").value); // works 

     so.close(); 
    } 
} 

Ich habe versucht, den Code mit document.getElementById("nextform").submit(); zu bearbeiten, Problem ist immer noch da.

Bin ich es? Ist es ein Fehler? Was vermisse ich?

+0

Warum benötigen Sie einen Wert in der Submit-Eingabe? – w3jimmy

+0

@ w3jimmy Das ist der "Name" des Textes, den die Benutzer sehen. Es könnte "Download" oder "Zurück" sein. Sie schlagen vor, ich sollte es löschen? – slevin

+0

Ihre Seite postet tatsächlich, wenn Sie das sehen, also scheint das Problem nicht der Button selbst zu sein. Kann etwas mit der umgeleiteten Seite nicht stimmen? – Kuzgun

Antwort

4

Ich glaube, das ist ein Fehler beim Festlegen von Formularwerten im IE leer.

würde ich vorschlagen, eine andere Methode zum Zurücksetzen der Form Werte versuchen, habe ich diese Methode in der Vergangenheit verwendet:

document.getElementById('name').parentNode.innerHTML = ''; 
+0

Können Sie einen kleinen Zusammenhang dazu und vielleicht Ihre Gedanken hinter diesem Ansatz bieten? Ich habe mir die Problemumgehung angesehen, die mit dem Fehlerbericht gepostet wurde, kann sie aber nicht implementieren, da ich jQuery nicht verwende. IE11 stürzt beim Eingeben von Daten in ein Formular für mich ab - ich nahm an, dass es etwas mit dem automatischen Vorschlag zu tun hat, kann aber nicht zu diesem Zweck debuggen. –

+0

@Andrew Ja, hat mit dem Fehler zu tun, den Sie erwähnen. Ich habe den Workaround dort ausprobiert und für mich gearbeitet. Mein ursprünglicher Code hat ein Formular mit mehr als 5 Feldern. Wenn übergeben, ruft 'save()' auf. Diese Funktion löscht auch die Felder mit JS. Der Fehler in diesem Formular stürzt das 'nextform' Formular und auch den Browser ab. Ich entschuldige mich dafür, dass ich nicht meinen ganzen Code gepostet habe, ich wusste nicht, dass es mit dem ersten Formular zu tun hat. Ich habe dieselbe Frage nicht zweimal gestellt. Weil ich dachte, dass der gleiche Code zwei verschiedene Probleme hatte. Stellt sich heraus, es ist das gleiche Problem. Ich fragte diese zuerst. Danke jedenfalls – slevin

+0

Keine Sorgen @ Slevin, es verwirrt mich nur, wie es schien, als ob Sie die gleiche Frage stellen würden. Ich bin froh, dass die Problemumgehung Ihnen geholfen hat. – Andy

4

Vielleicht nicht das Problem, aber:

<input type="submit" name="submit" ... > 

Giving eine Form Kontrolle einen Namen von vorlegen wird die Form des einreichen Verfahren mit einem Verweis auf die Steuerung ersetzen, so form.submit() Aufruf wird versuchen, zu " rufe "die Eingabe auf.

+0

Netter Ratschlag, aber nichts hat sich geändert. Problem ist immer noch da – slevin

+0

Wie gesagt, "vielleicht nicht dein Problem", es ist nur ein Ratschlag. – RobG

+0

Ich weiß, und danke für Ihre Zeit noch einmal. Ich habe alles versucht. Ändern Sie die Struktur von JS, verwenden Sie "GET" anstelle von "POST". Macht mich verrückt, kann es nicht lösen. Vielleicht irgendwelche anderen Ratschläge? Alles wird tun. Ich kann es nicht funktionieren lassen. – slevin

3

hallo Problem in Ihrem Code sein könnte Sie vermisse ID in Form hinzuzufügen und du versuchst auf das Formular zuzugreifen, indem du es nicht definierst.

document.getElementById("nextform").submit(); 

seine erforderliche

<form name="nextform" id="nextform" action="anotherpage.php" method="post" enctype="multipart/form-data"> 

... 
... 
... 

</form> 
0

Trace durch das, was in der anotherpage.php Seite passiert, wenn es die Postbacks, evt erhält.Daten werden möglicherweise nicht wie erwartet (binär oder Text, wenn Text, ist es UTF-8) codiert.

Postback auf eine andere Seite, wo alles, was es tut, die zurückgebrachten Werte ausgibt.

Schließt der Socket eine Ausnahme?

so.close(); 
0

Mein ursprünglicher Code hat ein Formular mit mehr als 5 Feldern. Wenn gesendet, ruft die save(). save() Funktion löscht auch die Felder mit JS.

Es gibt einen Fehler in IE11, der den Browser abstürzt, wenn Sie versuchen, mehr als 5 Felder mit JS zu löschen. Siehe here, es gibt eine Problemumgehung.

Dieser Bug stürzt das erste Formular ab, dann das nextform Formular und auch den Browser. Ich entschuldige mich dafür, dass ich nicht meinen ganzen Code gepostet habe, ich wusste nicht, dass es mit dem ersten Formular zu tun hat.

Weil ich das gleiche Stück Code gedacht hatte zwei verschiedene Probleme, gab ich eine andere Frage, sehr ähnlich, here

0

In meinem Fall die Eingabe-Taste den gleichen ID und Namen hatte. Sie können also prüfen, ob sie gleich sind und wenn sie identisch sind, einen anderen Wert für einen der Parameter verwenden.

Ich hoffe es hilft.