Fenster schließen & Formularauswertung gehen nicht

Hallo allerseits!

Mein Projekt sieht folgendermaßen aus:
Der Anwender soll ein Formular ausfüllen. Dieses Formular wird bei „Absenden“ überprüft und dann öffnet sich ein zweites Fenster. In diesem Fenster werden die Daten nochmals angezeigt (funktioniert mittels verstecktem Formular). Der Anwender hat dann die Möglichkeit entweder auf Senden zu drücken oder auf Zurück.

1)Da sind wir schon beim „Zurück“. Ich schaffe es nicht, dass das Fenster geschlossen wird.

2)formular.beruf[formular.beruf.selectedIndex].text
funktioniert bei input type=hidden nicht. Bei input type=text schon. Das verstehe ich nicht.

Wahrscheinlich dürfte ich das mit dem versteckten Formular gar nicht machen …

Hier der Link zum Projekt:
http://www.speedyshare.com/359940777.html

Interessant wird für euch wahrscheinlich nur die check.js sein.

Jedenfalls finde ich den Fehler einfach nicht. Ich hoffe ihr könnt mir weiterhelfen.

LG
Franz

Zu Frage 1 …

http://www.speedyshare.com/359940777.html

Also Du hättest ruhig dazu sagen können, welchen der dortigen Links man klicken soll.

Interessant wird für euch wahrscheinlich nur die check.js sein.

Nö. Viel interessanter ist der Quelltext des neuen Fensters. Vielleicht solltest Du bei der Erzeugung eben dieses Quelltextes ein paar Zeilenumbrüche einbauen, das hilft ungemein. Und vor allem solltest Du ihn Dir mal anschauen. Das Fenster kann ja gar nicht zugehen. Die Funktion, die Du aufrufst, ist unbekannt. Warum? Weil Du das JS-File nicht eingebunden hast. Mann!

Aber selbst, wenn Du es einbindest, wird es nicht funktionieren. Denn in der Funktion selbst verwendetst Du den Fensternamen. Der ist aber dem neuen Fenster völlig unbekannt, weil es mit dem alten nichts zu tun hat. Dieser Name ist im Kontext des neuen Fensters nicht definiert. Dass Du zufällig das gleiche JS-File eingebunden hast … wie gesagt - das ist Zufall. Hätte auch ein anderes sein können. Da muss „window.close();“ oderso stehen.

Vielleicht kann man hier auch mit „parent“ undso arbeiten, aber warum alles so kompliziert machen, wenn Du das verborgenen Formular ohnehin schon generiert hast, also direkt zum Absenden benutzen kannst.

Abgesehen davon wäre es ziemlich unpassend, das gleiche Skript auch im neuen Fenster einzubinden, wenn Du nur die eine Funktion daraus benötigst, die wiederum vom Hauptfenster nicht gebraucht wird. Lösung: Entweder ein zweites JS-File oder den Code direkt im Quelltext unterbringen. Kann man sich aber auch sparen und direkt das „window.close()“ in den Click-Handler reinschreiben.

Jedenfalls finde ich den Fehler einfach nicht. Ich hoffe ihr könnt mir weiterhelfen.

Ich hoffe, ich konnte helfen :wink:

Tipp: Grab Dich mal durch den JS-Teil von SelfHTML durch (http://de.selfhtml.org/javascript/index.htm). Ist zwar mühsam, aber vor solchen Projekten unverzichtbar.

Achso, und Dein regulärer Ausdruck zum Überprüfen der Mail-Adresse nimmt meine nicht an, weil sie einen Punkt im Postfachnamen hat. Vor dem @ lässt Du aber keine Punkte zu. Achso, und noch eins: Dass das [.] darin funktioniert, muss Zufall sein. Eigentlich müsste es [.] heißen, weil der Punkt ein Sonderzeichen ist. Achso, und in den andern Ausdrücken muss das z in A-z natürlich groß geschrieben werden, sonst klappt das nicht. Eine sehr gute Anleitung zu den nicht sehr einfachen regulären Ausdrücken gibt es in der Perl-Abteilung von SelfHTML: http://de.selfhtml.org/perl/sprache/regexpr.htm.

Überhaupt stammen 98% meines Wissens über HTML, JS, CSS, Perl und Reguläre Ausdrücke aus inzwischen über zehnjähriger Arbeit mit SelfHTML und WerWeissWas.

Zu Frage 2 …

2)formular.beruf[formular.beruf.selectedIndex].text
funktioniert bei input type=hidden nicht.
Bei input type=text schon. Das verstehe ich nicht.

Ich schon. Versuch´s mal mit value statt text. Du kannst den TEXT-Typ nicht mit dem HIDDEN-Typ in einen Topf werfen. Näheres zum Umgang mit Formularen wie immer bei SelfHTML: http://de.selfhtml.org/html/formulare/index.htm

Ich muss allerdings zugeben, dass dort die TEXT-Eigenschaft überhaupt nicht vorkommt, was verwirrend sein mag. Ein Grund mehr jedoch, sich einer der aufgeführten Eigenschaften zu bedienen.

Kristian

Hallo Kristian!

Vielen Dank für deine Hilfe!

2)formular.beruf[formular.beruf.selectedIndex].text
funktioniert bei input type=hidden nicht.
Bei input type=text schon. Das verstehe ich nicht.

Versuch´s mal mit value statt text.

Bei selfhtml habe ich das Problem, dass ich mich nicht zu Recht finde. Jedenfalls hab ich es nun auch mit value probiert. Aber es geht bei mir trotzdem nicht. Klar text & hidden sind zwei verschiedene Sachen. Ich hatte da leider nur Copy & Paste gemacht …

LG Franz

Hi nochmals!

Vielleicht solltest Du bei der Erzeugung eben dieses
Quelltextes ein paar Zeilenumbrüche einbauen, das hilft
ungemein.

Ich hab es jetzt mit writeln. Mit \n habe ich es nicht zusammengebracht. Welche Möglichkeiten gibt es denn noch?

Das Fenster kann ja gar nicht zugehen. Die Funktion, die Du
aufrufst, ist unbekannt. Warum? Weil Du das JS-File nicht
eingebunden hast. Mann!

Sorry. War an dem Tag schon fertig …

Tipp: Grab Dich mal durch den JS-Teil von SelfHTML durch
(http://de.selfhtml.org/javascript/index.htm). Ist zwar
mühsam, aber vor solchen Projekten unverzichtbar.

Werde ich wenn ich Zeit habe mal machen. Nur im Moment muss ich noch ein paar Sachen fertig stellen …

Achso, und Dein regulärer Ausdruck zum Überprüfen der
Mail-Adresse nimmt meine nicht an, weil sie einen Punkt im
Postfachnamen hat. Vor dem @ lässt Du aber keine Punkte zu.

Danke, dass du mich darauf aufmerksam gemacht hast! Jetzt habe ich es so:

/^[a-zA-Z0-9_-.]*@{1}[a-z-]*[.]{1}[a-z]*$/

Aber das funktioniert nur beim IE6. Nicht beim IE7 und nicht beim FF.

Achso, und noch eins: Dass das [.] darin funktioniert, muss
Zufall sein. Eigentlich müsste es [.] heißen, weil der Punkt
ein Sonderzeichen ist.

Vieles bei mir ist Zufall :wink:

Achso, und in den andern Ausdrücken
muss das z in A-z natürlich groß geschrieben werden, sonst
klappt das nicht.

Hatte da einen kleinen Rechtschreibfehler! Vielen Dank für den Hinweis!

Eine sehr gute Anleitung zu den nicht sehr
einfachen regulären Ausdrücken gibt es in der Perl-Abteilung
von SelfHTML: http://de.selfhtml.org/perl/sprache/regexpr.htm.

Gibts ein regexp nur für Leerzeichen? Denn

/\s/ ein Leerzeichen oder ein Steuerzeichen aus (12.-15.) enthält

hat Tabs & Zeilenvorschub drinnen.

Überhaupt stammen 98% meines Wissens über HTML, JS, CSS, Perl
und Reguläre Ausdrücke aus inzwischen über zehnjähriger Arbeit
mit SelfHTML und WerWeissWas.

Wenn man weiß wie die Begriffe heißen wonach man sucht :wink:

Etwas ist mir an meinem Bsp. noch aufgefallen. Wenn jemand mehrere Hobbys angeklickt hat, nimmt er nur eines. Obwohl es mittlerweile so aussieht:

writeln(„Fußball“);
}
else if(formular.hobby[1].checked)
{
writeln("‚Eishockey‘/>Eishockey");
}
else if(formular.hobby[2].checked)
{
writeln("‚Volleyball‘/>Volleyball");
}
else if(formular.hobby[3].checked)
{
writeln("‚Handball‘/>Handball");
}
else if(formular.hobby[4].checked)
{
writeln("‚Basketball‘/>Basketball");
}
else if(formular.hobby[5].checked)
{
writeln("‚Snooker‘/>Snooker");
}
else if(formular.hobby[6].checked)
{
writeln("‚anderes‘/>anderes");
}
writeln("");

Ich hoffe du kannst mir nochmals weiterhelfen!

LG
Franz

Ich bins schon wieder :wink:

Das mit dem Mail absenden hab ich auch noch nicht so ganz hinbekommen. Siehe http://www.wer-weiss-was.de/cgi-bin/forum/showarticl…

Ich werde es jetzt mal wieder probieren.

Grüße
Franz

Etwas ist mir an meinem Bsp. noch aufgefallen. Wenn jemand
mehrere Hobbys angeklickt hat, nimmt er nur eines. Obwohl es
mittlerweile so aussieht:

writeln(„Fußball“);
}
else if(formular.hobby[1].checked)
{
writeln("‚Eishockey‘/>Eishockey");
}
else if(formular.hobby[2].checked)
{
writeln("‚Volleyball‘/>Volleyball");
}
else if(formular.hobby[3].checked)
{
writeln("‚Handball‘/>Handball");
}
else if(formular.hobby[4].checked)
{
writeln("‚Basketball‘/>Basketball");
}
else if(formular.hobby[5].checked)
{
writeln("‚Snooker‘/>Snooker");
}
else if(formular.hobby[6].checked)
{
writeln("‚anderes‘/>anderes");
}
writeln("");

Hat sich erledigt :wink:

Grüße
Franz

Ahh bin ich doof …

„.text“ ist schon richtig. Nur ich habe den Text nie ausgegeben. Da ich mir nie den Quellcode angeschaut habe …

Jetzt funktioniert es. :smile:)))

Alles erledigt!
So hab jetzt glaub ich alles geschafft!

Vielen Dank für deine Unterstützung.

Grüße
Franz