formumalar datenuebergabe
ingo
- javascript
0 Michael Schröpl0 ingo
der user soll seine eingaben in ein formular vor dem absenden als vorschau sehen. dazu soll per js ein neués fenster geöffnet werden, indem die daten formatiert ausgegeben werden.
die vorschau soll nicht ueber cgi realisiert(das habe ich schon hingekriegt-ueber zwei submit button) werden und auch nicht ueber schreiben und wieder auslesen einer datei mit js.
grund: das formular ist sehr lang(ca. 100 Eintraege 120k nur text)
und die ueberpruefung der eingaben auf vollstaendigkeit und zugelassene char + versand als mail und genieren einer antwort-html mit anzeige der form-daten ueber cgi
dauer schon lang genug
eher dachte ich an
<script language="JavaScript">
F1 = open("dat1.htm","Fenster1");
for(j=0,j<=anzahlelemnte,j++){
Fenster1.document.writeln(elternfenster.document.Formular.elements[j].name);
}
</script>
danke ingo
p.s. habe vor meiner anfrage das forum von 98 bis 99 durchgeblaettert, war ganz amuesand und lehrreich, habe fuer mein problem aber leider immer nur andere loesungsansaetze gefunden
die vorschau soll nicht ueber cgi realisiert(das habe ich schon hingekriegt-ueber zwei submit button) werden
grund: das formular ist sehr lang(ca. 100 Eintraege 120k nur text)
Diese Argumentation halte ich nicht für schlüssig.
Wenn das Formular so lang ist, dann ist auch die Kontrollausgabe so lang. Egal, ob Du sie statisch vom Server holst oder dynamisch per CGI generierst - der Aufwand für die Generierung auf dem Server ist klein (weil algorithmisch nicht viel zu tun ist) und der Aufwand für die Übertragung ist in beiden Fällen etwa gleich hoch (weil abhängig vom Datenvolumen).
<script language="JavaScript">
F1 = open("dat1.htm","Fenster1");
Eben, und das Holen von "dat1.htm" ist der Teil, auf den der Benutzer wird warten müssen.
Das technische Problem bei Deiner Lösung ist der Transport von 100 Formularwerten in die nächste Seite. Das ist nicht ganz trivial.
Im Archiv gibt es Ansätze, einige wenige Informationen zu transportieren, aber in Deinem Falle halte ich CGI durchaus für die eleganteste Lösung.
<script language="JavaScript">
F1 = open("dat1.htm","Fenster1");Eben, und das Holen von "dat1.htm" ist der Teil, auf den der Benutzer wird warten müssen.
Das technische Problem bei Deiner Lösung ist der Transport von 100 Formularwerten in die nächste Seite. Das ist nicht ganz trivial.
Im Archiv gibt es Ansätze, einige wenige Informationen zu transportieren, aber in Deinem Falle halte ich CGI durchaus für die eleganteste Lösung.
erstmal danke
eigentlich sollte der script
<script language="JavaScript">
F1 = open("neue.htm","Fenster1");
for(j=0,j<=anzahlelemnte,j++){
if (elternfenster.document.Formular.elements=wurdewasausgefuellt){
Fenster1.document.writeln(elternfenster.document.Formular.elements[j].name);}
}
</script>
nur die logik erklaeren, also bitte nicht unbedingt auf die syntax achten,
1. der inhalt des neuen fenster soll eigentlich lokal generiert werden und wird nicht vom sever geholt,
2. muessen nicht alle felder des formular ausgefuellt werden, daher habe ich auch schon einen js der prueft ob felder ausgefuellt bzw. angeklickt sind,(und auch nur die sollen ins fenster geschrieben werden) dergleichen laueft auf dem server, so das per mail bzw. in der antwort.htm nur die eingebenen bzw. angwaehlten daten beachtet werden
3. das problem besteht immer noch im formatierten schreiben von formuladaten aus dem elternfenster ins kindfenster
(lsg. im forum bezogen sich bisher nur auf verschiedene frames)
ingo
p.s.
ich hoffe das ich mich jetzt klarer augedrueckt habe
Hi Ingo
Zu deinem Problem: Du musst in jedem Fall eine Seite (in deinem Fall "neue.htm") vom Server holen. Diese koennte natuerlich nur das html Grundgeruest beinhalten. Auf jeden Fall funktioniert es prinzipiell so, dass der Code auf die von dir beschriebene Art zum gewuenschten Ergebnis fuehrt. Die Frage ist nur, was du mit "formatiertem Schreiben von Formulardaten" meinst. Moechtest du, dass auf der neuen Seite das ganze Formular ohne den nicht ausgefuellten Bereichen steht, oder einfach nur, dass Elementname und Elementinhalt in jeweils einer (neunen) Zeile stehen?? Fuer den zweiten Fall habe ich mal eine kleine einfache Loesung gebastelt. Hier der Quelltext.
<html>
<head>
<title>Formulartest</title>
<script language="JavaScript">
anzahlelemente=10;
function Wertuebertrag() {
F1.document.writeln('<html><head></head><body bgcolor="green">');
for(j=0;j<anzahlelemente;j++){
F1.document.writeln('<p>'+self.document.Formular.elements[j].name+': ');
F1.document.writeln(self.document.Formular.elements[j].value+'</p>');
}
F1.document.writeln('</body></html>');
F1.document.close();
return
}
function Zeigeformular(){
F1 = open("neue.html","Fenster1");
window.setTimeout("Wertuebertrag()",1000);
}
</script>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<form action="" name="Formular" method="" target="">
Input1:<input type=text name="Input1" value="Wert1"><br>
Input2:<input type=text name="Input2" value="Wert2"><br>
Input3:<input type=text name="Input3" value="Wert3"><br>
Input4:<input type=text name="Input4" value="Wert4"><br>
Input5:<input type=text name="Input5" value="Wert5"><br>
Input6:<input type=text name="Input6" value="Wert6"><br>
Input7:<input type=text name="Input7" value="Wert7"><br>
Input8:<input type=text name="Input8" value="Wert8"><br>
Input9:<input type=text name="Input9" value="Wert9"><br>
Input10:<input type=text name="Input10" value="Wert10">
</form>
<a href="javascript:Zeigeformular()">Zeige das Formular</a>
</body>
</html>
Ich hoffe das hilft ein wenig
Holger
PS Du kannst natuerlich statt der <p>....</p> Absaetze auch Tabellen oder aehnliches verwenden.