zurück zur Startseite
  


Zurück XHTMLforum > (X)HTML und CSS > (X)HTML
Seite neu laden Dynamische Formerweiterung

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 29.09.2011, 17:11
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 15.09.2011
Beiträge: 7
hansmeiser befindet sich auf einem aufstrebenden Ast
Standard Dynamische Formerweiterung

Hallo,

ich habe folgendes Problem. Auf meiner Webseite habe ich ein Formular mit diversen Inputfeldern innerhalb einer Tabelle, die ich dynamisch erweitern möchte. Dazu hab ich mir etwas Javascript geschrieben, welches soweit auch gut funktioniert. Ich kann mir also per Buttonklick weitere Zeilen in der Tabelle hinzufügen, welche diverse Zellen enthalten, die wiederum die Inputfelder beinhalten. Um das in der Form darzustellen habe ich Befehle, wie etwa: "tableCell.appendChild(inputField)". Nun werden diese Inputs jedoch beim submitten des Formulars nicht mit übergeben, da sie ja auch nicht direkt dem Formular zugeordnet wurden, sondern den Tabellenzellen. Hat jemand ne Idee wie ich das miteinander vereinbaren könnte?

Gruß
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 29.09.2011, 17:44
body.ie {display: grotte}
XHTMLforum-Mitglied
 
Registriert seit: 09.01.2011
Beiträge: 841
take_a_7 sorgt für eine eindrucksvolle Atmosphäretake_a_7 sorgt für eine eindrucksvolle Atmosphäre
Standard

Moin,

die Inputs müssen natürlich irgendwo innerhalb der form ins HTML eingebaut werden.

gruß,
take
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 29.09.2011, 17:57
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 15.09.2011
Beiträge: 7
hansmeiser befindet sich auf einem aufstrebenden Ast
Standard

Die Stelle, an der ich sie erzeuge ist innerhalb der Form, aber er erkennt es trotzdem nicht. Nur wenn ich meiner Funktion die Form übergebe und die inputs direkt an die Form hänge, dann geht es. Aber dann habe ich nicht mehr die Darstellung, die ich möchte.
Mit Zitat antworten
  #4 (permalink)  
Alt 29.09.2011, 18:10
body.ie {display: grotte}
XHTMLforum-Mitglied
 
Registriert seit: 09.01.2011
Beiträge: 841
take_a_7 sorgt für eine eindrucksvolle Atmosphäretake_a_7 sorgt für eine eindrucksvolle Atmosphäre
Standard

Moin,

dann machst du was falsch. Ich habe auf einer Seite genau das gleiche: Tabelle in einer Form und per Klick auf einen Button werden per JS neue Zeilen in die Tabelle eingefügt mit Input-Feldern drin. Das funktioniert einwandfrei. Poste mal einen Testcase.

gruß,
take
Mit Zitat antworten
  #5 (permalink)  
Alt 29.09.2011, 18:42
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 15.09.2011
Beiträge: 7
hansmeiser befindet sich auf einem aufstrebenden Ast
Standard

Hier eine vereinfachte Version meiner Tabelle

HTML-Code:
<table id="Units">
	<form name="PUnitEditForm" action="config.php#PUnits" method="post">
		<tbody id="PUnits">
			<tr id="PU1">
				<td>
					<input type="text" name="srcArray[]"/>
				</td>
				<td>
					<input type="text" name="uriArray[]"/>
				</td>
				<td align="center">
					<a href="javascript:void(0)" onclick="addPUArrayElem('PUnits')">add</a>
				</td>
			</tr>
		</tbody>
	</form>
	...
</table>
und hier die entsprechende Funktion

Code:
var index = 1;
function addPUArrayElem(tBodyId) {
	try {
		index++;
		var pu = document.getElementById(tBodyId);
		var tr = document.createElement('tr');
		var trId = 'PU' + index;
		tr.setAttribute('id', trId);
		var srcTd = document.createElement('td');
		var uriTd = document.createElement('td');
		var srcInput = document.createElement('input');
		srcInput.setAttribute('type', 'text');
		srcInput.setAttribute('name', 'srcArray[]');
		srcTd.appendChild(srcInput);
		var uriInput = document.createElement('input');
		uriInput.setAttribute('type', 'text');
		uriInput.setAttribute('name', 'uriArray[]');
		uriTd.appendChild(uriInput);
		tr.appendChild(srcTd);
		tr.appendChild(uriTd);
		pu.appendChild(tr);
	} catch(e) {
		alert(e.message);
	}
}
Wenn ich nun mehrere Zeilen mit Inputfeldern hinzufüge und submitte, dann wird lediglich ein Element pro Array weitergegeben.
Mit Zitat antworten
  #6 (permalink)  
Alt 29.09.2011, 19:27
Standardkatze
XHTMLforum-Kenner
 
Registriert seit: 06.02.2007
Beiträge: 1.820
gato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nett
Standard

Ein form-Element darf kein Kindelement eines table-Elements sein.
Der Browser schließt das form-Element daher direkt nachdem es geöffnet wurde.

Hättest du den Validator benutzt, hättest du dir (und uns) viel Mühe ersparen können

P.S. Damit die Seite auch ohne JavaScript benutzbar ist, sollte das href-Attribut immer auf eine tatsächlich vorhandene Webseite zeigen.
__________________
Über Internet Explorer 8:
Noch bis 8. April 2014 wird der Internet Explorer 6 mit Sicherheitsupdates versorgt.
Bereits jetzt kann dieser Browser aber vollständig durch den IE8 ersetzt werden. Ältere Betriebssysteme und Browserversionen werden von Microsoft nicht mehr unterstützt.
Auch Programme, die den IE7 benötigen, sind kein Argument gegen IE8, da dieser über entsprechende Kompatibilitätsschichten verfügt.
Ab sofort gilt daher der Internet Explorer 8 als vorausgesetzer Mindeststandard.
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dynamische Selectbox Praktikant Javascript & Ajax 2 22.08.2010 19:04
Problem mit dynamische Breite Crys CSS 2 03.09.2009 13:44
dynamische CSS-Navigation mit mehreren Navigationsebenen online CSS 1 17.04.2009 12:07
Dynamische Breite stevie99 CSS 4 25.11.2007 13:19
Fixer "Footer"-Div an dynamische "Content-Höh methodfive CSS 13 29.10.2005 09:51


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:48 Uhr.