• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

dynamisch hinzugefügte Felder werden mit einem Formular im FF nicht übermittelt ...

derSESO

New member
Hallo!

Ich habe ein Formular, bei dem man mittels Button einen besteimmten Bereich erweitern kann.
Soll bedeuten ... standardmäßig gibt es die Möglichkeit eine FA-Nummer einzugeben.
Da es hin und wieder notwendig ist, mehrere einzugeben, wird per Button eine weitere Zeile bzw. eine weiteres Feld per JS hinzugefügt.

Leider wird dieses dynamisch hinzugefügte Feld scheinbar im FF beim Formular absenden nicht übertragen.
Das Ganze funktioniert im IE ohne Probleme.

Was kann dies sein???

Script, das das dynamische Feld einfügt (wird durch einen kleinen Button aufgerufen):
Code:
function rein(tabID)
{
        var zeilen = document.getElementById(tabID).getElementsByTagName("tr").length;
        var newID = zeilen+1;

        var tr = document.getElementById(tabID).insertRow(0);
        tr.id = 'FAtr'+newID;
        var td3 = document.createElement("td");
        var td4 = document.createElement("td");
        var td5 = document.createElement("td");
        td3.innerHTML = '<input id="fanr_'+newID+'" name="fanr_'+newID+'" type="text" name="auftrag_nr" id="auftrag_nr" value="" style="width:60px; margin-bottom: 5px;" class="textfeld" maxlength="5" />';
        td4.innerHTML = '  ';
        td5.innerHTML = '<select name="status_'+newID+'" class="selectfeld" style="margin-bottom: 5px;"><option value="VOR">vor Produktionsstart</option><option value="NACH">nach Produktionsstart</option></select>';
        tr.appendChild(td3);
        tr.appendChild(td4);
        tr.appendChild(td5);

        document.getElementById("anzFA").value = newID;
}
 
Du benutzt eine <table> für das ganze Konstrukt.
Dann zwingend die <form> Tags außerhalb der Tabelle sonst macht FF (mein Lieblingsbrowser GRRR) Ärger.

Jetzt bin ich aber echt gespannt, ob meine Klaskugel wieder funktioniert ;)
 
Bin ich nicht der Hammer?
Jaaa, manche Sachen kann man mich fragen, insbesondere zu meinem verhaßten Firefox :)

Freut mich, dass es das war.

Frag nächstes mal früher :)

Edit: Ich glaube, ich muss mal einen Blog aufmachen, was der FF mich schon Zeit und Nerven gekostet hat...... :)
 
Zuletzt bearbeitet:
Jaja, der FF - weiss gar nicht, warum so viele drauf schwören. :)
Ich auch nicht. Das Ding ist für mich rundherum das blanke Grauen.
Allerdings muss man sagen, Konkurrenz belebt das Geschäft. Ich sehe ganz enormen Fortschritt, den die FF Community klar mit gestaltet hat.
Das Produkt FF als Browser an sich bleibt aber für mich verachtenswert. Das war auch noch nie anders und ändert sich vermutlich auch nicht mehr ;)
Gab ja mal eine Zeit, da war in aller Munde "der IE ist offen wie ein Scheunentor". Wenn ich das schon gehört habe, rollten sich meine Fußnägel auf.
Mittlerweile höre ich mehr Klagen über die vielen Udates und dass die ganzen blöden Add-Ins nicht mehr nachkommen.
Lach ich mir doch einen :)

Also nochmal Danke. :)
Sehr gern.
 
Da ein <form> direkt in einem <table> invalides HTML ist, ist das nicht weiter verwunderlich, dass die Browser da ein undefiniertes Verhalten zeigen...
Mit validem HTML hat man im FF eigentlich selten Problem.

PS: Surfen ohne AdBlock ist echt nervig!
 
Gab ja mal eine Zeit, da war in aller Munde "der IE ist offen wie ein Scheunentor". Wenn ich das schon gehört habe, rollten sich meine Fußnägel auf.
Oh, das war aber definitiv so. Eine Zeitlang war es für den normalen User, der sein System so benutzte wie es ausgeliefert wurde, eine Gefahr gewesen im Internet zu surfen. Dank ActiveX und viele andere Lücken im IE war so ein Windows System mit grosser Wahrscheinlichkeit befallen.

Mittlerweile höre ich mehr Klagen über die vielen Udates und dass die ganzen blöden Add-Ins nicht mehr nachkommen.
ich kann nicht klagen, ganz im gegenteil.

Ich nutze ein z.b. AddOn, was ich irgendwann in einer frühen 3 Version installiert hatte. Die Entwicklung wurde eingestellt und später musste ich die Aktivierung von Hand durch Änderung in der Installationsdatei erzwingen (in den Versionen 4-5). Das läuft aber wieder (FF 12). Alle anderen AddOn sind ohne Probleme durch alle Updates gekommen (NoScript, Ghostery, AddBlock, Greasemonkey, Firebug, Webdeveloper, Brief, Downloadhelper) und das sind gerade die Sachen, die mich immer an Firefox gehalten haben.

Den Sprung von 3 auf 4 wollte ich damals auch nicht machen und habe eine Zeitlang mit Opera experimentiert, obwohl der schneller ist, hat er es nie geschafft mich zu überzeugen.

Und sich über ein Standardkonformes Verhalten zu wundern, ist auch seltsam.
 
Und sich über ein Standardkonformes Verhalten zu wundern, ist auch seltsam.
Mag ja alles Standard sein. Aber - unabhängig von diesem konkreten Fall - manchmal hast du Situationen, da testest du in 5 Browsern und nur der FF flippt rum. Dann fragt man sich schon, wer den Standard vorgibt :)
Und dann finde mal die richtigen Suchbegriffe, um das Problem zu beschreiben. Ist auch nicht immer einfach. Und für jeden Pups ein Forum zu befragen nervt auch manchmal.
Aber irgendwann kennt man die ganzen Fallstricke und kann damit umgehen.
 
Mag ja alles Standard sein. Aber - unabhängig von diesem konkreten Fall - manchmal hast du Situationen, da testest du in 5 Browsern und nur der FF flippt rum. Dann fragt man sich schon, wer den Standard vorgibt :)
Naja, ich erlebe das häufiger beim IE (als ich ihn noch explizit uterstützte) oder auch Opera, FF "flippt" eher selten rum. Vor allem, wenn man von Anfang an darauf achtet, dass Code auch Standardkonform ist.

Ist es denn wirklich so, dass nur Firefox hier in diesem Fall das genannte Verhalten zeigt? Es wurde ja bisher nur IE und FF erwähnt. Ich kann mir gut vorstellen, dass hier nur der IE sich nicht Standardkonform verhält.

Darüber hinaus, hat der gezeigt Code mehr Stolperfallen für den IE, der bei mit JS erzeugten Tabellen mehr Probleme hat, als andere Browser.
 
So wie ein Schlauer möchte ich die vielen nützlichen Erweiterungen beim FF nicht mehr missen und die Liste noch um 2 erweitern:
- HTML Validator
- SQLite Manager

Der HTML Validator liefert schon beim ersten Aufruf einer Seite Hinweise auf Schwachstellen. Besonders bei der Generierung von HTML mittels PHP kommt es schnell mal zu invaliden Code.
 
@mikdoe: kannst du mal ein Beispiel zeigen, in dem nur der FF "rumgeflippt" hat?
Mittlerweile werden diese Momente extrem selten. Man lernt ja dazu und bekommt Übung. Habe aktuell garkein Beispiel.

Übrigens hat der FF (und vielleicht auch andere aber nicht der IE) das hier beschriebene Problem ja nur in genau dieser Situation.
Wenn du also eine unveränderliche Tabelle benutzt ist es dem FF auch egal, ob form innerhalb oder außerhalb von table steht.
Das heißt im Grunde, bei unveränderlichen wird invalides HTML geduldet, bei dynamischen nicht. Das finde ich halt speziell an diesem Fall nicht gut am FF.
Und das ist doch mit Sicherheit in dieser Detailtiefe nirgendwo festgelegt, dass ein Browser sich genau so zu verhalten hat, oder etwa doch?
 
es macht aber doch Sinn, dass ein Browser sich am Standard orientiert bzw. eigentlich versucht ihn einzuhalten, wo immer möglich
und dass FF bei statischen Seiten invalides HTML akzeptiert, ist bestimmt ein Kompromiss, damit nicht 90% der Webseiten nicht funktionieren

bei dynamischen Inhalten kann man den Programmierer schon eher langsam aber sicher zu validem code "erziehen", da er ja auch gewisse Konventionen z.B. für Ajax requests usw. beachten muss

wenn man da dann auch noch Kompromisse macht, braucht es den Standard nicht mehr und wir fallen wieder um 10 Jahre zurück, wo jeder sein Süppchen kochte

das wär aber noch schlechter, als sich hier und da an einen anderen Stil zu gewöhnen, oder?

Du sagst doch selbst und das kann man nur unterstreichen, dass der IE von Standards und der schrittweisen Annäherung an den Standard profitiert hat

Danke Standard :d
 
Übrigens hat der FF (und vielleicht auch andere aber nicht der IE) das hier beschriebene Problem ja nur in genau dieser Situation.

Code:
<!DOCTYPE html>
<html><head><title>Test</title>
<script type="text/javascript">
function add() {

	var t = document.getElementById('t');
	var r = t.insertRow(0);
	var c = r.insertCell(0);
	c.innerHTML = "<input type='button' value='text' onclick='alert(this.form)'>"
}
</script>
</head>
<body>

<table id="t">
<form action="" method="get">
	<tr>
		<td><input type="button" name="test" value="add" onclick="alert(this.form); add()"> </td>
	</tr>
	<tr>
		<td><input type="submit" name="test" value="los"> </td>
	</tr>

</form>
</table>

</body>

</html>
getestet im FF, OP, Chromium und Epiphany, alle Verhalten sich gleich. Das .form Attribut des hinzugefügten button ist bei allen null. Im Firebug kannst du sehen, dass das form Element unmittelbar vor dem tr Element geschlossen wird, d.h. im DOM sind die zwei buttons im HTML Code nicht inerhalb des Formular. Das es trotzdem abgeschickt wird, ist wrklich verwunderlich.

Das heißt im Grunde, bei unveränderlichen wird invalides HTML geduldet, bei dynamischen nicht. Das finde ich halt speziell an diesem Fall nicht gut am FF.
Geduldet ist wohl das falsche Wort, bei invaliden HTML darf sich der Browser Verhalten wie er möchte. Warum die input Element im HTML in das Form Element eingebaut werden ist mir aber auch nicht klar. Ich habe keine Stelle in den specs gefunden die das erklärt, finde ich aber auch nicht gut.

Das das dynamische Element nicht eingebaut wird, ist eigentlich das richtige Verhalten, da es im DOM an dieser Stelle ja auch Form Element gibt. Wie der IE (als einziger Browser) da errät, dass es an dieser Stelle eines gibt ist mir ein Rätsel und dürfte eines von diesen Dingen sein, die den IE dafür bekannt gemacht haben, dass er "rumflippt".
 
Warum die input Element im HTML in das Form Element eingebaut werden ist mir aber auch nicht klar. Ich habe keine Stelle in den specs gefunden die das erklärt, finde ich aber auch nicht gut.
Jup, das meinte ich.

Das das dynamische Element nicht eingebaut wird, ist eigentlich das richtige Verhalten, da es im DOM an dieser Stelle ja auch Form Element gibt. Wie der IE (als einziger Browser) da errät, dass es an dieser Stelle eines gibt ist mir ein Rätsel und dürfte eines von diesen Dingen sein, die den IE dafür bekannt gemacht haben, dass er "rumflippt".
Das wiederum nenne ich "intuitiv richtig gemacht" und nicht flippen :)

Diese ganze Diskussion kann man sachlich kaum sinnvoll fortführen. Denn am Ende geht es immer um die "kaputten" Fälle. Und da meistens nicht spezifiziert ist, wie Browser mit kaputten Sachen umgehen sollen ist sowieso jede unserer Erwartungen am Ende falsch, denn: meistens kommt es anders und zweitens als man denkt :)
 
Zuletzt bearbeitet:
Naja, wenn ein Browser "intuitiv" etwas anders macht, als alle anderen, dann dürfte das in den meisten Fällen dazu führen, dass der Entwickler ausflippt. Und wie gesagt, dafür ist der IE bekannt. Meine Erwartung in dem Fall, dass kein Formular vorhanden ist wo ein Inputelement eingefügt wird, ist die, dass das Element nicht das Formular eingebaut wird. Alles andere ist verwirrend.

Wenn man sich ein bisschen Mühe gibt wird man damit sicher auch einen Fall finden, wo dieses Verhalten als störend empfunden wird. Ähnlich wie das automatische erzeugen von Variabeln, wenn ein Element eine ID hat oder das Inputelemente, die mit DOM Methoden einem Formular hinzugefügt werden, nicht in die element collection eingefügt werden - übrigens vermutlich auch der Grund warum der OP hier beim Formularelement keine DOM Methode benutzt sondern innerHTML, usw. usf.

Und dann sich hinzustellen und zu behaupten das Firefox rumflippt, obwohl er sich in dem Fall verhält wie alle anderen Browser - also vermutlich genau richtig - ist sehr seltsam.
 
Im Firebug kannst du sehen, dass das form Element unmittelbar vor dem tr Element geschlossen wird, d.h. im DOM sind die zwei buttons im HTML Code nicht inerhalb des Formular.
das ist aber auch nicht konsistent durchgezogen, im span ist es wieder enthalten.

Das das dynamische Element nicht eingebaut wird, ist eigentlich das richtige Verhalten, da es im DOM an dieser Stelle ja auch kein(anm. des Zitierenden)Form Element gibt. Wie der IE (als einziger Browser) da errät, dass es an dieser Stelle eines gibt ist mir ein Rätsel und dürfte eines von diesen Dingen sein, die den IE dafür bekannt gemacht haben, dass er "rumflippt".
beim IE gibt es ein Form-element, dort ist die dom-struktur so wie im html (falsch) angegeben (der ie verhält sich so, wie der ff bei einem form im span-element)
 
Zurück
Oben