Dynamisches Formular erstellen
Natalie
- javascript
Hallo,
ich will ein Formular erstellen.
Dabei soll es ein Optionsfeld geben, bei dem ich 3 Felder auswählen kann.
Abhängig von dieser Auswahl soll als nächstes verschiedene Formularfelder in der schon geöffneten Seite auftauchen.
Mein Ansatz bis jetzt schaut so aus:
das sind die 3 Auswahlfelder
<table border="0" cellpadding="0" id="table8">
<tr>
<td><input type="button" value="A" name="kontierobjekt" onClick="anlagen()"></td>
</tr>
<tr>
<td><input type="button" value="T" name="kontierobjekt" onClick="coauftrag()"></td>
</tr>
<tr>
<td><input type="button" value="K" name="kontierobjekt" onClick="kostenstelle()"></td>
</tr>
</table>
und dann meine JavaScript-Funktionen:
<script language="JavaScript">
<!--
function anlagen() {
document.write('<table border="0" cellpadding="0" id="table9">');
document.write('<tr>');
document.write('<td> Anlagennummer: </td>');
document.write('<td> <input type="text" name="anlagennummer" size="30"></td>');
document.write('</tr>');
document.write('</table>');
}
function coauftrag()
{
document.write('<table border="0" cellpadding="0" id="table10">');
document.write('<tr>');
document.write('<td> Konto (8-stellig): </td>');
document.write('<td> <input type="text" name="konto_t" size="30"></td>');
document.write('</tr>');
document.write('<tr>');
document.write('<td> Co-Auftrag: </td>');
document.write('<td><input type="text" name="coauftrag" size="30"></td>')
document.write('</tr>');
document.write('</table>');
}
function kostenstelle()
{
document.write('<table border="0" cellpadding="0" id="table11">');
document.write('<tr>');
document.write('<td> Konto (8-stellig): </td>');
document.write('<td> <input type="text" name="konto_k" size="30"></td>');
document.write('</tr>');
document.write('<tr>');
document.write('<td> Co-Auftrag: </td>');
document.write('<td><input type="text" name="kostenstelle" size="30"></td>')
document.write('</tr>');
document.write('</table>');
}
//-->
</script>
Funktioieren tut die Seite.
Allerdings wenn ich auf A zum Beispiel auswähle, seh ich nur noch das Formularfeld Anlagennummer. Ich will aber nur das dieses Formularfeld an das Formular angehängt wird.
Bitte um HILFE!!!
Hallo Natalie!
So wie Du es bisher gelöst hast, ist das ganze nicht möglich. Mittels document.write kannst Du während des Renderns der Seite etwas in die Seite schreiben. Rufst Du dies wie bei Dir gelöst später auf, überschreibt die Funktion alles im Dokument.
Viel schöner, sauberer und auch effektiver wäre es, wenn Du mit Blockelementen und Display arbeiten würdest.
Schönen Gruß
Afra
Hallo Afra,
wie kann ich dann da bewerkstelligen, dass ich dynamisch immer wieder neue Positionen erzeugen kann?
D.H. ich will eine Position mit A. Geb da alle Daten ein und dann eins mit T ...
Hallo Natalie!
Genau so, wie Du es beschrieben hast. Einblenden (display: block) der Blockelemente und Ausblenden (display: none)der Blockelemente. Zwischendrin vielleicht noch Absenden des Forumlars.
Was meinst Du mit Positionen?
Beschreibe Dein wirkliches Problem, denn bisher hast Du Lösungen für beschriebene Probleme erhalten.
Schönen Gruß
Afra
Also:
Das ganze soll eine Bestellanforderung werden.
Jede Position dieser Bestellforderung kann entweder einen Kontierungstyp A, T oder K haben. Die Anzahl der Positionen, die einer bestellt weiß man aber ja nicht vorher.
Und 10 (Beispiel) einfachmal festzulegen als maximal find ich nicht schön.
Also dachte ich ich mach eine Position und erzeuge dann immer neue Positionen, wenn er mehrere Positionen haben will. Das heißt ich allokier erst Platz, wenn er es anfordert.
Hallo Natalie!
Du musst Deine Art der Problembeschreibung noch etwas ausfeilen. Es ist wirklich schwer Dir zu folgen. Im Ausgangsposting hast Du Dein Problem nämlich noch völlig anders dargestellt.
Um beliebige Form-Elemente anhand der Anforderungen des Benutzers anzuzeigen würde ich Dir eigentlich nur einen Postback an den Server (neuladen des Formulars) empfehlen. Einfacher Grund: Das Formular ist dann nicht abhängig von Javascript. Das musst Du aber selbst entscheiden.
Du kannst mittels innerHTML beliebigen HTML Quellcode in ein Dokument schreiben. Ich denke damit fährst Du sehr gut, vor allem da die einzublendenden Formelemente bei Dir nicht beliebig sind.
Schönen Gruß
Afra
hi,
Also dachte ich ich mach eine Position und erzeuge dann immer neue Positionen, wenn er mehrere Positionen haben will. Das heißt ich allokier erst Platz, wenn er es anfordert.
dann beschäftige dich mit DOM-methoden wie createElement() und co., um die elemente zu dem zeitpunkt zu erzeugen und ins dokument einzuhängen, wenn sie benötigt werden.
gruß,
wahsaga
Hallo wahsaga!
dann beschäftige dich mit DOM-methoden wie createElement() und co., um die elemente zu dem zeitpunkt zu erzeugen und ins dokument einzuhängen, wenn sie benötigt werden.
oder so. ;o)
Schönen Gruß
Afra