Toon posts:

[JS] Cookies & Formulieren

Pagina: 1
Acties:
  • 56 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo ik was bezig met een formulier waarin je naam moet opgeven:

<input type="text" size="20" name="naam" onBlur="zetCookie()" value="Je naam">
Ook moet je je e-mail adres opgeven.
<input type="text" size="20" name="e-mail">

Nu had ik dit al:

<script language="JavaScript" type="text/javascript" >
Verval = new Date
Verval.setMonth(Verval.getMonth()+6)

Naam = ""
if (document.cookie != "") {
Naam = document.cookie.split("=")[1]
}

function zetCookie() {
Naam = document.opdracht_form.naam.value
document.cookie = "Naam="+Naam+";expires=" + Verval.toGMTString()
}

if (document.cookie != "") {
document.opdracht_form.naam.value = document.cookie.split("=")[1]
}
</script>

Maar als ik mijn naam invul en het cookie wordt gezet dan komt er in het veld "naam" niet naam te staan.
Hoe moet het script worden dat er in het cookie ook je e-mail komt te staan en dat de naam en e-mail worden geplakt in het veld "naam" en "e-mail"?

Verwijderd

dan moet je toch zeker in je form bij naam als value iets in de trant van value="document.cookies['naam'][1]" intikken?

Disclaimer: zo uit het hoofd hoor, het kan dat ik met dat object wat verkeerd zit, maar volgens mij is dit de strekking :)

Verwijderd

Topicstarter
Bedoel je:
<input type="text" size="20" name="naam" onBlur="zetCookie()" value="document.cookies['naam'][1]">

of
if (document.cookie != "") {
document.opdracht_form.naam.value="document.cookies['Naam'][1]"
}

Want het werkt niet echt :S

Verwijderd

Op vrijdag 28 juni 2002 21:16 schreef Aldentev het volgende:
Bedoel je:
<input type="text" size="20" name="naam" onBlur="zetCookie()" value="document.cookies['naam'][1]">

of
if (document.cookie != "") {
document.opdracht_form.naam.value="document.cookies['Naam'][1]"
}

Want het werkt niet echt :S
ik zat aan die eerste te denken ja :)
Werkt ie niet? Dan ga ik nog even studeren, of /me , onze DHTML goeroe :P moet even komen zeggen wat er fout is :)

Verwijderd

Kijk anders even naar een voorbeeld Annie, op www.codebase.nl. Daar staat een hele handige functie om cookies te getten/setten.

Verwijderd

Topicstarter
<html><head>
<script language="JavaScript" type="text/javascript" >
Verval = new Date
Verval.setMonth(Verval.getMonth()+6)

Naam = ""
if (document.cookie != "") {
Naam = document.cookie.split("=")[1]
}

function zetCookie(veld) {
gegeven = document.opdracht_form.[veld].value
document.cookie = "gegeven="+gegeven+";expires=" + Verval.toGMTString()
}

if (document.cookie != "") {
document.opdracht_form.naam.value = document.cookies['='][1]
}
</script>
<title>Formulier</title>
</head>
<body>
<br><br>
<form action="" method="post" name="opdracht_form">
<input type="hidden" name="subject" value="Je antwoorden bij opdracht 1 t/m 5">
<input type="hidden" name="header" value="formulier">
<input type="hidden" name="sort" value="header, naam, e-mail">
<table>
<a name="gegevens"><div class="q">0.1:</div><div class="vraag">Vul</a> eerst je persoonlijke gegevens in..</div>
<tr><td>Je naam:</td><td><input type="text" size="20" name="naam" onBlur="zetCookie(naam)"></td></tr>
<tr><td>Je e-mail adres:</td><td><input type="text" size="20" name="e-mail" onBlur="zetCookie(e-mail)"></td></tr>
<tr><td>Je klas:</td><td><input type="text" size="20" name="klas" onBlur="zetCookie(klas)"></td></tr>
</table>
</form>
</body>
</html>

Dit is de complete HTML bron. Ik heb ff gekeken bij Annie, maar dat gaan me een beetje boven mijn pet.. Voor jullie zal het wel :z zijn :).

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 23:06

crisp

Devver

Pixelated

Leer eerst eens [ code ] tags gebruiken, dan het gebruik van quotes (single quotes binnen JS, dubbele quotes voor HTML attributen), en kijk dan eens naar de volgende handige functies:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function getcookie(id) {

  if (document.cookie) {

    var index = document.cookie.indexOf(id);
    if (index != -1) {

    var oleft = (document.cookie.indexOf('=', index) + 1);
    var oright = document.cookie.indexOf(';', index);
    if (oright == -1) {
      oright = document.cookie.length;
    }
    return document.cookie.substring(oleft, oright);
    }

  }

  return false;

}

function setcookie(id, cookievars) {

  if (document.cookie != document.cookie) {
    index = document.cookie.indexOf(id);
  } else { 
    index = -1;
  }

  if (index == -1) {

    document.cookie=id+'='+cookievars+'; expires=Monday, 04-Apr-2010 05:00:00 GMT';

  }

}

Zo te gebruiken:
code:
1
2
setcookie('PREFS', 'var1,var2,var3,etc'); //set the cookie
getcookie('PREFS'); // get the cookie

Intentionally left blank


Verwijderd

Topicstarter
Ok, het werkt nu..

Dit scriptje om te zetten:
<script language="JavaScript" type="text/javascript" >
Verval = new Date
Nu = new Date
Verval.setMonth(Verval.getMonth()+6)

function zetCookie() {
naamveld = document.opdracht_form.naam.value
postveld = document.opdracht_form.email.value
klasveld = document.opdracht_form.klas.value
document.cookie = "naam="+naamveld+";expires=" + Verval.toGMTString();
document.cookie = "e-mail="+postveld+";expires=" + Verval.toGMTString();
document.cookie = "klas="+klasveld+";expires=" + Verval.toGMTString();
document.cookie = "laatstebezoek="+Nu+";expires=" + Verval.toGMTString();
document.cookie = "correct="+"ja"+";expires=" + Verval.toGMTString();
}
</script>

En deze om te getten:

actief = cookieVal("actief")
sessie = cookieVal("sessie")
stijl = cookieVal("stijl")
correct = cookieVal("correct")
naam = cookieVal("naam")
klas = cookieVal("klas")
post = cookieVal("e-mail")
laatstebezoek = cookieVal("laatstebezoek")
function cookieVal(cookieName) {
thisCookie = document.cookie.split("; ")
for (i=0; i<thisCookie.length; i++) {
if (cookieName == thisCookie[i].split("=")[0]) {
return thisCookie[i].split("=")[1]
}
}
return 0
}

Nou wil ik dus dat het in het veld geladen wordt, dat doe ik zo:

<script language="JavaScript" type="text/javascript" >
plak1 = '<tr><td>Je naam:</td><td><input type="text" size="20" name="naam" value="';
end = '"></td></tr>';
plak2 = '<tr><td>Je e-mail adres:</td><td><input type="text" size="20" name="email"';
plak25 = 'value="'
plak3 = '<tr><td>Je klas:</td><td><input type="text" size="20" name="klas" value="';
if (naam != ""){
document.write(plak1 + naam + end + plak2 + plak25 + post + end + plak3 + klas + end);
}
else{
document.write(plak1 + end + plak2 + plak25 + end + plak3 + end);}
</script>

Mijn vraag is: kan dit ook efficienter?

Verwijderd

waar moeten gegevens komen te staan?
Allemaal in de body van de website?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Euh, probeer het eens uit, lees eens wat html-tutorials en schop geen ¾ jaar oud topic omhoog.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1

Dit topic is gesloten.