Formulardaten für Umfrage in Cookie zwischenspeichern
eMatt
- javascript
Hallo allerseits!
Habe das Problem, dass ich eine Umfrage mit HTML-Formularen machen und dabei ist mein eigentliches Problem, dass es wie gesagt mehrere Formulare sein sollen und dass ich es im Intranet publizieren muss und deswegen keinen externen Formulardienstleister in Anspruch nehmen kann. Der interne bietet allerdings nicht die Möglichkeit an Daten, die auf einem Forumlar gemacht wurden, in eine Variable zu speichern und erst mit einem weiteren Formular gesamt zu verschicken.
Deswegen versuche ich jetzt die Daten in einem Cookie zu speichern und in jedem Formular auf dieses Cookie zuzugreifen und dann auf dem letzten Formular alles gesamt zu verschicken. Aber irgendwie klappt das nicht so ganz - bin JavaScript-Anfänger.
Da die Formulare wie gesagt im Intranet publiziert werden hier der Code von 2 Formularen mit denen ich das ganze gerade teste. (Dazwischen ist noch eine Seite, auf der aber keine Daten eingegeben werden.)
1. Formular:
<html>
<head>
<meta http-equiv="Content-Type">
<link rel="stylesheet" type="text/css" href="Stylesheet.css" media=all>
<title>Umfrage zur Standardisierung</title>
<script type="text/javascript">
<!-- JavaScript vor nicht JavaScript-fähigen Browsern verstecken
var EvtlAnderes
function BeiClick() {
AnderesAktiviert();
EvtlAnderesBelegen();
Cookie();
}
function AnderesAktiviert() {
if (document.Formular.KenntUnsVon[0].checked==false && document.Formular.KenntUnsVon[1].checked==false &&
document.Formular.KenntUnsVon[2].checked==false && document.Formular.KenntUnsVon[3].checked==false &&
document.Formular.KenntUnsVon[4].checked==false && document.Formular.KenntUnsVon[5].checked==false &&
document.Formular.KenntUnsVon[6].checked==false) {
window.alert("Sie müssen etwas auswählen um mit der Umfrage fortfahren zu können!")}
else {
if (document.Formular.anderesEingabe.value != "" && document.Formular.KenntUnsVon[6].checked == false) {
window.alert("Sie dürfen nichts in das Textfeld eingeben, wenn Sie nicht auch den "
+ "Radiobutton 'Anderes' ausgewählt haben!");}
else {location.href="http://www.intranet.undsoweiter'";}
}
}
function EvtlAnderesBelegen() {
if (document.Formular.KenntUnsVon[6].checked == true) {EvtlAnderes = document.Formular.anderesEingabe.value}
else {EvtlAnderes = ""}
}
function Cookie() {
// Die Infos dieses Formulars als Cookie zwischenspeichern (Im letzten Formular werden sie alle zusammen versendet.) //
if (liesCookie('CookieESN1Umfrage') == null) {
var expdate = new Date();
expdate.setTime(expdate.getTime() + (1000 * 60 * 60 * 24 * 80));
setzeCookie('CookieESN1Umfrage', expdate, document.Formular.KenntUnsVon.value, EvtlAnderes);}
else if (liesCookie('CookieESN1Umfrage') != null) {
VorhandenesCookieLoeschen();
var expdate = new Date();
expdate.setTime(expdate.getTime() + (1000 * 60 * 60 * 24 * 80));
setzeCookie('CookieESN1Umfrage', expdate, ", Kennt uns von = ", document.Formular.KenntUnsVon.value, EvtlAnderes)};
}
function liesCookieWert (offset) {
var endstr = document.cookie.indexOf (";", offset)
if (endstr == -1) {
endstr = document.cookie.length; }
return unescape(document.cookie.substring(offset, endstr));
}
function liesCookie (CookieName) {
var arg = CookieName + "=";
var argLaenge = arg.length;
var CookieLaenge = document.cookie.length;
var i = 0;
while (i < CookieLaenge) {
var j = i + argLaenge;
if (document.cookie.substring(i,j) == arg) {return liesCookieWert(j)};
if (i == 0) {break};
}
return null;
}
function setzeCookie(name, wert1, wert2, wert3, wert4) {
var argv = setzeCookie.arguments;
var argc = setzeCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
//var domain = (argc > 4) ? argv[4] : null;
var domain = "www.intranet.bosch.com";
var secure = (argc > 5) ? argv[5] : null;
document.cookie = name + "=" + escape(wert1 + ", " + wert2 + ", " + wert3 + ", " + wert4) +
((expires == null) ? "" : ("; expires = " +
expires.toTimeString())) + ((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain = " + domain)) + ((secure == true) ? "; secure" : "");*/
}
function VorhandenesCookieLoeschen() {
var abgelaufen = new Date();
abgelaufen.setTime(abgelaufen.getTime() - 1000000);
var CookieWert = getCookie('CookieESN1Umfrage');
document.cookie = 'CookieESN1Umfrage' + "=" + CookieWert + "expires=" + abgelaufen.toTimeString();
}
//-->
</script>
</head>
<body>
<h1>
Umfrage zur Standardisierung
</h1>
<br>
<br>
<form name="Formular" method="post">
<table align=center>
<tr>
<td></td>
<td>
Woher kennen Sie ESN1?
</td>
<td></td>
</tr>
<tr>
<td width=25%>
</td>
<td class="Auflistung" width=50%>
<br>
<input type="radio" name="KenntUnsVon" value="PPL"> Von der PPL<br>
<input type="radio" name="KenntUnsVon" value="Handbuch"> Durch das EE-Handbuch<br>
<input type="radio" name="KenntUnsVon" value="Website"> Von der Website<br>
<input type="radio" name="KenntUnsVon" value="Responsibility-Matrix"> Durch die Responsibility-Matrix<br>
<input type="radio" name="KenntUnsVon" value="Newsletter"> Durch den Newsletter<br>
<input type="radio" name="KenntUnsVon" value="New-Parts-Matrix"> New-Parts-Matrix-Abfrage<br>
<input type="radio" name="KenntUnsVon" value="Anderes"> Anderes: <input name="anderesEingabe"
type="text" style="font-size:11pt;color:#990000;width:50mm;height:7mm;" maxlength="50"><br>
</td>
<td width=25%>
</td>
</tr>
</table>
<br>
<br>
<p class="pButton" >
<input class="Button" type="button" value=" Zurück "
onclick="location.href='http://www.intranet.undsoweiter'">
<input class="Button" type="button" value=" Weiter " onclick="BeiClick()">
</p>
</form>
</body>
</html>
Das 3. Formular folgt in der 1. Antwort auf dieses Posting, da es sonst zu lang würde.
Wär echt cool, wenn mir jemand helfen könnte! Viele Dank schon mal.
Gruß,
eMatt
Hier das 3. Formular:
<html>
<head>
<meta http-equiv="Content-Type">
<link rel="stylesheet" href="Stylesheet.css" type="text/css" media="all">
<title>Umfrage zur Standardisierung</title>
<script type="text/javascript">
//<!-- JavaScript vor nicht JavaScript-fähigen Browsern verstecken
var GlaubtWirMachen;
function BeiClick() {
WerteInVariablenSchreiben();
Cookie();
RichtigOderFalsch();
}
function RichtigOderFalsch() {
if (document.Formular.GlaubtWirMachen[2].checked==false && document.Formular.GlaubtWirMachen[4].checked==false &&
document.Formular.GlaubtWirMachen[7].checked==false && document.Formular.GlaubtWirMachen[0].checked==false &&
document.Formular.GlaubtWirMachen[1].checked==false && document.Formular.GlaubtWirMachen[3].checked==false &&
document.Formular.GlaubtWirMachen[5].checked==false && document.Formular.GlaubtWirMachen[6].checked==false) {
window.alert("Sie müssen etwas auswählen um mit der Umfrage fortfahren zu können!")}
else {
if (document.Formular.GlaubtWirMachen[2].checked==true && document.Formular.GlaubtWirMachen[4].checked==true &&
document.Formular.GlaubtWirMachen[7].checked==true && document.Formular.GlaubtWirMachen[0].checked==false &&
document.Formular.GlaubtWirMachen[1].checked==false && document.Formular.GlaubtWirMachen[3].checked==false &&
document.Formular.GlaubtWirMachen[5].checked==false && document.Formular.GlaubtWirMachen[6].checked==false) {
location.href="http://www.intranet.undsoweiter";}
else {location.href="http://www.intranet.undsoweiter";}
}
}
function WerteInVariablenSchreiben() {
GlaubtWirMachen = new Array(6);
GlaubtWirMachen[0] = "";
GlaubtWirMachen[1] = "";
GlaubtWirMachen[2] = "";
GlaubtWirMachen[3] = "";
GlaubtWirMachen[4] = "";
GlaubtWirMachen[5] = "";
GlaubtWirMachen[6] = "";
if(document.Formular.GlaubtWirMachen[0].checked){GlaubtWirMachen[0] = document.Formular.GlaubtWirMachen[0].value};
if(document.Formular.GlaubtWirMachen[1].checked){GlaubtWirMachen[1] = document.Formular.GlaubtWirMachen[1].value};
if(document.Formular.GlaubtWirMachen[2].checked){GlaubtWirMachen[2] = document.Formular.GlaubtWirMachen[2].value};
if(document.Formular.GlaubtWirMachen[3].checked){GlaubtWirMachen[3] = document.Formular.GlaubtWirMachen[3].value};
if(document.Formular.GlaubtWirMachen[4].checked){GlaubtWirMachen[4] = document.Formular.GlaubtWirMachen[4].value};
if(document.Formular.GlaubtWirMachen[5].checked){GlaubtWirMachen[5] = document.Formular.GlaubtWirMachen[5].value};
if(document.Formular.GlaubtWirMachen[6].checked){GlaubtWirMachen[6] = document.Formular.GlaubtWirMachen[6].value};
for (var i=0; i<=6; i=i+1) {
if (GlaubtWirMachen[i] != "") {GlaubtWirMachen = GlaubtWirMachen + ", " + GlaubtWirMachen[i]}
};
}
function Cookie() {
// Die Infos dieses Formulars als Cookie zwischenspeichern (Im letzten Formular werden sie alle zusammen versendet.) //
if (liesCookie('CookieESN1Umfrage') == null) {
window.alert("Es konnten noch keine Informationen zwischengespeichert werden, weil wahrscheinlich die " +
"Cookie-Einstellungen Ihres Browsers zu 'streng' eingestellt sind. Da Sie dies jedoch wahrscheinlich " +
"nicht selbst einstellen dürfen, bzw. können (deaktiviert) sollten Sie Ihren IV-Beauftragten um Hilfe bitten.");}
else if (liesCookie('CookieESN1Umfrage') != null) {
var CookieWert = getCookie('CookieESN1Umfrage');
setzeCookie('CookieESN1Umfrage', CookieWert, ", GlaubtWirMachen = ", GlaubtWirMachen);}
}
function liesCookieWert (offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1) {
endstr = document.cookie.length; }
return unescape(document.cookie.substring(offset, endstr));
}
function liesCookie (CookieName) {
var arg = CookieName + "=";
var argLaenge = arg.length;
var CookieLaenge = document.cookie.length;
var i = 0;
while (i < CookieLaenge) {
var j = i + argLaenge;
if (document.cookie.substring(i,j) == arg) {return liesCookieWert(j)};
if (i == 0) {break};
}
return null;
}
function setzeCookie(name, wert1, wert2, wert3, wert4) {
var argv = setzeCookie.arguments;
var argc = setzeCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : null;
document.cookie = name + "=" + escape(wert1 + ", " + wert2 + ", " + wert3 + ", " + wert4) +
((expires == null) ? "" : ("; expires = " +
expires.toTimeString())) + ((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain = " + domain)) + ((secure == true) ? "; secure" : "");
}
//-->
</script>
</head>
<body>
<h1>
Umfrage zur Standardisierung
</h1>
<br>
<form name="Formular" action="http://www.intranet.undsoweiter" method="post"
onsubmit="return BeiClick();">
<input type="hidden" name="to" value="meineeMailAddy">
<input type="hidden" name="from">
<input type="hidden" name="subject" value="Umfrage zu ESN1">
<input type="hidden" name="okmessageurl" value="http://www.intranet.undsoweiter">
<input type="hidden" name="showfieldname" value="1">
<input type="hidden" name="delimiter" value="crlf">
<table>
<tr>
<td>
</td>
<td>
Was, glauben Sie, machen wir?
</td>
<td>
</td>
</tr>
<tr>
<td width=15%>
</td>
<td width=70%>
<table>
<tbody class="TabelleObenAusrichten">
<tr class="TabelleObenAusrichten">
<td>
<br>
<input type="checkbox" name="GlaubtWirMachen" value="Blablabla"><br>
</td>
<td class="TabellePage5">
<br>Blablabla
<br>
</td>
</tr>
<tr class="TabelleObenAusrichten">
<td>
<input type="checkbox" name="GlaubtWirMachen" value="CorporateDesign"><br>
</td>
<td class="TabellePage5">
Das Corporate Design<br>
</td>
</tr>
<tr class="TabelleObenAusrichten">
<td>
<input type="checkbox" name="GlaubtWirMachen" value="PPMundGleichteilekonzept"><br>
</td>
<td class="TabellePage5">
Überwachung neu eingeführter Teile bzgl. der PPM und des Gleichteilekonzepts<br>
</td>
</tr>
<tr class="TabelleObenAusrichten">
<td>
<input type="checkbox" name="GlaubtWirMachen" value="Dokumentation"><br>
</td>
<td class="TabellePage5">
Dokumentation der Fortschreitung der Standardisierung<br>
</td>
</tr>
<tr valign="top" class="TabelleObenAusrichten">
<td>
<input type="checkbox" name="GlaubtWirMachen" value="bevorzugendeTeile">
</td>
<td class="TabellePage5">
Abstimmen und Umsetzen, welche Teile zu bevorzugende Teile sind<br>
</td>
</tr>
<tr class="TabelleObenAusrichten">
<td>
<input type="checkbox" name="GlaubtWirMachen" value="Arbeitsplätze">
</td>
<td class="TabellePage5">
Vereinheitlichung der Arbeitsplätze und Büroräume<br>
</td>
</tr>
<tr class="TabelleObenAusrichten">
<td>
<input type="checkbox" name="GlaubtWirMachen" value="Englisch">
</td>
<td class="TabellePage5">
Überführung deutscher Dokumente in die Konzernsprache Englisch<br>
</td>
</tr>
<tr class="TabelleObenAusrichten">
<td>
<input type="checkbox" name="GlaubtWirMachen" value="Workshops">
</td>
<td class="TabellePage5">
Organisation von entsprechenden Standardi­sierungs­workshops<br><br>
</td>
</tr>
</tbody>
</table>
</td>
<td width=15%>
</td>
</tr>
<tr height="100px" class="TabelleObenAusrichten">
<td></td>
<td align=center>
<input class="Button" type="button" value=" Zurück "
onclick="location.href='http://www.intranet.undsoweiter'">
<input class="Button" type="submit" value=" Weiter "> <!-- onclick="BeiClick()" -->
<td></td>
</tr>
</table>
</form>
</body>
hi,
Aber irgendwie klappt das nicht so ganz - bin JavaScript-Anfänger.
Du nimmst doch nicht ernsthaft an, dass sich jetzt jemand meterweise durch deinen Code blättert?
Beim liefern einer vernünftigen Problembeschreibung kann dir </hilfe/charta.htm#tipps-fuer-fragende> helfen - "klappt nicht" ist jedenfalls keine.
gruß,
wahsaga
Hallo nochmal!
Wenn ich im Browser auf der Seite "javaScript:alert(unescape(document.cookie));" eingeb bringt er mir eine Meldung wie "ASPSESSIONIDSSCBCTBB=IHK....; ASPSESSIONIDASTTTDAB=JLF....".
"...." bedeutet: da kann ich keine Wörter mehr erkennen, Buchstabensalat.
Was ist das für n komischer Cookiename? Den hab ich doch nicht definiert. Hatte auch schon, dass die Cookie-Meldung leer war. Sind das 2 Cookies?
Vielleicht hilft es ja auch, wenn ich vorschlage, dass ihr euch mal folgende Zeilen näher anschaut:
"setzeCookie('CookieESN1Umfrage', CookieWert, ", GlaubtWirMachen = ", GlaubtWirMachen);}" in der "function Cookie()", sowie folgende Funktion:
" function setzeCookie(name, wert1, wert2, wert3, wert4) {
var argv = setzeCookie.arguments;
var argc = setzeCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : null;
document.cookie = name + "=" + escape(wert1 + ", " + wert2 + ", " + wert3 + ", " + wert4) +
((expires == null) ? "" : ("; expires = " +
expires.toTimeString())) + ((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain = " + domain)) + ((secure == true) ? "; secure" : "");
}"
Wenn ihr sonst noch Infos braucht, sagt es einfach.
Es ist halt schwierig ein Problem zu beschreiben, wenn man nicht ne Fehlermeldung nach dem Motto "In Zeile 7, Zeichen 8 fehlt ein ";"" bekommt. Sorry. ;-)
Gruß,
eMatt
Hallo,
Vielleicht hilft es ja auch, wenn ich vorschlage, dass ihr euch mal folgende Zeilen näher anschaut:
"setzeCookie('CookieESN1Umfrage', CookieWert, ", GlaubtWirMachen = ", GlaubtWirMachen);}" in der "function Cookie()", sowie folgende Funktion:
" function setzeCookie(name, wert1, wert2, wert3, wert4) {
var argv = setzeCookie.arguments;
...
deine Funktion "setzeCookie" ist so schön kompliziert und da ist es kein Wunder, wenn du sie falsch anwendest.
Sind dir die Argumente der Funktion klar?
Scheinbar musst du eine bestimmte Reihenfolge einhalten!
dabei könnte es mit dieser Alternative so einfach sein:
function cookie_set(name, value, expiredays) {
var expire_date = new Date();
expire_date.setTime(expire_date.getTime() + (expiredays * 24 * 3600 * 1000));
document.cookie = name + "=" + value + "; expires=" + expire_date.toGMTString() ;
}
cookie_set("abc","xyz",2); // cookie 2 Tage gültig
cookie_set("abc","",-1); // cookie löschen
beachte jetzt noch
Gruß plan_B
Hallo plan_B!
Danke für deine Hilfe.
Sieht gut aus. Habs probiert, aber es funzt leider immer noch nicht.
Aber egal, bin zu dem Schluss gekommen, dass es eigentlich gar nicht so schlimm ist, wenn ich für jede Frage n eigenes Formular hab und dann dazu je ne Mail krieg. Kann sie ja mit Hilfe des Betreffs entsprechend sortieren. Die Cookies nerven mich jetzt langsam nämlich sowieso.
Gruß,
eMatt
Hallo,
... Habs probiert, aber es funzt leider immer noch nicht.
dir war aber schon klar, dass auch bei der _alten_ Version setzeCookie(..),
sein durfte und die Aufrufe dazu überhaupt nicht passten?
setzeCookie('CookieESN1Umfrage', expdate, document.Formular.KenntUnsVon.value, EvtlAnderes);}
setzeCookie('CookieESN1Umfrage', expdate, ", Kennt uns von = ", document.Formular.KenntUnsVon.value, EvtlAnderes)};
und es hätte heissen müssen:
setzeCookie('CookieESN1Umfrage',
document.Formular.KenntUnsVon.value + "," + EvtlAnderes,
expdate );
oder bei der neuen Funtion entsprechend:
cookie_set('CookieESN1Umfrage',
document.Formular.KenntUnsVon.value + "," + EvtlAnderes, 2 );
Gruß plan_B