Zum Inhalt springen

Kalender in Formular

Erstellt am 3. September 2007 · 2 Antworten · letzte Antwort am 12. September 2007

Tags: Frage

ÁndreMansfeld ·

Hallo Freunde,
jetzt wirds etwas aufwendiger :-) ich hoffe, dass liest sich einer durch.
Zunächst einmal (dann gehts vielleicht auch ganz schnell)
Kann ich einen kleinen Kalender (ähnlich dem Date selector library oder Date2Calendar) in das TMAILFORM einbauen.
Ich möchte über ein Formular ein Datum vom Kalender versenden.
Wenn ja: weiß jemand was ich da im Quelltext vom Formular angeben muß, damit mir der Kalender gezeigt wird?

2.ter Ansatz -> ich nehme ein Java Kalender, welchen ich mit den Standardcodes im TS und im TMAILFORM einbinde.
Hier stoße ich aber auf extreme Ablehnung :-)
Wenn ich per TS in den Header die Javascripte einbinde, dann erhalte ich OUT of MEMORY Fehler und der IE stürzt ab. Der FF zeigt mir netterweise noch die Fehler an.

Die Einbindung der *.js im TMAILFORM HTML alleine reicht natürlich nicht, weil dann nichts in den HEADER geschrieben wird.
Ich muß also die Anbindung der *.js im TS machen.
Ich denke, dass das Problem damit zusammenhängt, das im HTML ebenfalls eine Javascriptfunktion hinterlegt ist, welche anscheinend nicht ausgeführt wird.
Weglassen kann ich die aber auch nicht.
Also irgendwie ist da der Wurm drin :-)
Hier mal die Codes im Einzelnen (verkürzt)

Ursprünglicher HTML Quelltext für den Kalender (außerhalb T3)

<html>
<head>

	<link rel="stylesheet" href="dynCalendar.css" type="text/css" media="screen" />
	<script src="browserSniffer.js" type="text/javascript" language="javascript"></script>
	<script src="dynCalendar.js" type="text/javascript" language="javascript"></script>
	<script type="text/javascript">
	<!--
		// Calendar callback. When a date is clicked on the calendar
		// this function is called so you can do as you want with it
		function calendarCallback(date, month, year)
		{
			date = date + '/' + month + '/' + year;
			document.forms[0].date.value = date;
		}
	// -->
	</script>

</head>
<body>

<form>
	<input type="text" name="date" value="" />
	<script language="JavaScript" type="text/javascript">
    <!--
    	fooCalendar = new dynCalendar('fooCalendar', 'calendarCallback', 'images/');
    //-->
    </script>
</form>

</body>
</html>

Das hatte ich im TS stehen (natürlich nicht auskommentiert)

#seite.headerData.20 = TEXT
#seite.headerData.20.value = <script type="text/javascript" src="fileadmin/calendar/browserSniffer.js"></script>
#seite.headerData.20.value = <script type="text/javascript" src="fileadmin/calendar/dynCalendar.js"></script>

Die ursprüngliche HTML Datei und das TS mußich jetzt irgendwie zusammenführen :-(

Also habe ich das HTML vom TMAILFORM wie folgt geändert
....

<td class="###EMAIL_ERR###"><input type="text" name="date_input1" />
    <script language="JavaScript" type="text/javascript">
    <!--
        /**
        * Example callback function
        */
        function calendar1Callback(date, month, year)
        {
            document.forms['calendar_test'].date_input1.value = date + '/' + month + '/' + year;
        }

        calendar1 = new dynCalendar('calendar1', 'calendar1Callback');
    //-->
    </script>

.....
Im Frontend wird jetzt der Kalender gezeigt und eigentlich passts, bis auf.....
wenn ich ein Datum auswähle, dann kommen die Fehlermeldungen (bzb. IE stürzt ab)

Fehlermeldung

document.forms['calendar_test'].date_input1.value = date + '/' + month + '/' + year;

Das ist natürlich genau die "function", welche innerhalb vom TMAILFORM HTML mit nem JavaScript aufgerufen wird (Hier weiß ich nicht, ob das überhaupt funktionieren kann).

Kann mir da jemand auf die Sprünge helfen???

Lieben Gruß Andreas

termino ·

na das sieht doch ganz gut aus.. die JavaScript Callback Funktion gehört laut Deinen Angaben aber in den HTML head!!
Dann stürzt vielleicht auch nix mehr ab beim Auswählen vom Datum

wie wärs mit:

seite.headerData.20 = TEXT
seite.headerData.20.value = <script type="text/javascript" src="fileadmin/calendar/browserSniffer.js"></script>
seite.headerData.20.value = <script type="text/javascript" src="fileadmin/calendar/dynCalendar.js"></script>
seite.headerData.20.value = <script type="text/javascript">
        <!--
                // Calendar callback. When a date is clicked on the calendar
                // this function is called so you can do as you want with it
                function calendarCallback(date, month, year)
                {
                        date = date + '/' + month + '/' + year;
                        document.forms[0].date.value = date;
                }
        // -->
        </script>
ÁndreMansfeld ·

Hallo Termino,
vielen Dank für die Antwort und sorry so spät, aber ich hatte totalen Termindruck und mußte mir erstmal anders helfen. Hab das was du geschrieben hast zwar ausprobiert, aber als es nicht gleich funktioniert hatte, habe ichs mit 3 Auswahlfeldern und der handgearbeiteten Methode gemacht :-)

Ich interessiere mich aber dafür und werde dies auf jeden Fall nochmal ausführlich checken. :-) Geb dann nochmal nen Statement ab.

Andreas