Per Javascript und Cookie einem Form Textelement einen Wert zuwe
Krams
- javascript
Hallo liebe Helfer,
ich habe schon etliche Seiten gelesen und auch einige Beispiele gefunden, aber nie die Lösung, die ich brauche...
Ich habe eine JSP und einen Cookie. Auf der JSP Seite gebe ich einen Benutzer und ein PW ein und den speichert mein Cookie auch ab, jedoch soll er bei einem erneuten Besuch diese Werte schon in die Felder schreiben, jedoch macht er das nicht und das ist mein Problem. (Ich kann den Cookie auf der JSP überall ausgeben, nur nicht in die Form schreiben..
Hier der Code der JSP (intern.jsp):
<html>
<head>
<script language="JavaScript" src="cookieBenutzerSpeichern.js"></script>
</head>
<body>
<!-- Inhalt -->
<div id="main">
<div class="left">
<h1>Internes</h1>
<br> <br>
<div align="center">
<form action="../museumphp/intern.php" method="post" name="form1">
<input type="hidden" name="step" value="1">
<table border="0" cellpadding="5" cellspacing="2" width="300">
<tr>
<td align="right"><span class="normalbold">Benutzername:</span></td>
<td align="center"><input type="text" name="username"
size="20" maxlength="255"
title="Bitte geben Sie hier Ihren Benutzernamen ein." onblur="nameSpeichern()"></td>
</tr>
<tr>
<td align="right"><span class="normalbold">Passwort:</span></td>
<td align="center"><input type="password" name="passwort"
size="20" maxlength="255"
title="Bitte geben Sie hier Ihr Passwort ein. Achten Sie hierbei bitte insbesondere auf Groß/Kleinschreibung!" onblur="passwortSpeichern()"></td>
</tr>
<tr>
<td class="formutitel" colspan="2" align="center"><input type="submit" value="Log in"
title="Um sich anzumelden, klicken Sie bitte einmal (!) auf diesen Knopf und warten Sie, bis sich die nächste Seite automatisch öffnet....">
<a href="eintragen.jsp">Registrieren</a></td>
</tr>
</table>
</form>
</div>
</div>
</div>
</body>
cookieBenutzerSpeichern.js:
var info,i,infoname,infowert;
if (!document.cookie){}
else {
info=document.cookie.split('; ');
for (i=0;i<info.length;i++) {
infoname=info[i].split('=')[0];
infowert=info[i].split('=')[1];
if (infoname=='Name') {
document.write("Schön " + infowert + ", dass du wieder da bist. Ich weiß alles über dich!<br>");
document.forms["form1"].elements["username"].value = ""+infowert;
}
if (infoname=='Passwort') {
document.write("Dein Hobby ist zum Beispiel " + infowert + "!");
document.form1.passwort.value = ""+infowert;
}
}
}
function nameSpeichern()
{
var a = new Date();
a = new Date(a.getTime() +1000*60*60*24*365);
document.cookie = 'Name'+'='+document.form1.username.value +'; expires='+a.toGMTString()+';';
}
function passwortSpeichern()
{
var a = new Date();
a = new Date(a.getTime() +1000*60*60*24*365);
document.cookie = 'Passwort'+'='+document.form1.passwort.value +'; expires='+a.toGMTString()+';';
}
Bei der js-Seite document.forms["form1"].elements["username"].value = ""+infowert; sowie document.form1.passwort.value = ""+infowert; "funktioniert" nicht.
Vorab schonmal herzlichen Dank fürs Bemühen und Durchlesen! :)
VG
Krams
Hi,
Bei der js-Seite document.forms["form1"].elements["username"].value = ""+infowert; sowie document.form1.passwort.value = ""+infowert; "funktioniert" nicht.
Das liegt daran, dass die Felder zu dem Zeitpunkt noch gar nicht existieren – hätte dir die JS-Fehlerkonsole deines Browsers auch mitteilen können!
Binde das Script am Ende des body ein, oder warte auf den load- oder mindestens DOMContentReady-Event.
(Und btw., das Verknüpfen eines String-Wertes mit einem Leerstring ist vollkommen überflüssig; k.A. warum Anfänger das so oft für nötig halten, sieht man in anderen Sprachen auch häufig.)
MfG ChrisB
Hallo,
(Und btw., das Verknüpfen eines String-Wertes mit einem Leerstring ist vollkommen überflüssig; k.A. warum Anfänger das so oft für nötig halten, sieht man in anderen Sprachen auch häufig.)
das erzwingt immerhin die Umwandlung des zweiten Operanden in einen String, so wie die Multiplikation mit 1 die Umwandlung in einen Zahlenwert erzwingt. Trotzdem kann ich mir nicht vorstellen, dass solche Tricks deswegen irgendwo gelehrt werden, zumal es nur sehr selten nötig ist, die automatische Typkonvertierung von Javascript auszutricksen (hier definitiv nicht). Für PHP gilt Ähnliches.
@Krams: Ebenso überflüssig ist das Verstümmeln von Ümlauten.
Ja, der war Absicht. ;-)
Ciao,
Martin
@@Der Martin:
nuqneH
@Krams: Ebenso überflüssig ist das Verstümmeln von Ümlauten.
Zum Nachlesen: Wann keine Escapes zu verwenden sind
Ebenfalls überflüssig: language="JavaScript" beim script-Element. Sinnvoll war das noch nie; je nach HTML-Version/-Variante ist es auch falsch. (In HTML 4 war hingegen type="text/javascript" nötig.)
Einfach <script src="cookieBenutzerSpeichern.js"></script>
. Wo das zu stehen hat, hat ChrisB ja bereits gesagt.
Ganz am Anfang hat noch <!DOCTYPE html>
zu stehen, um Browser nicht in den Quirksmodus zu schicken.
Qapla'