help please..how to unescape() the value of a cookie?

K

koen colen

Hello group,

I hope you guys can help me out, I am modifying a piece of code from Joe
Norman,
I did found the code here:
http://www.intranet2internet.com/public/default.asp?PAGE=sscript&ID=3

My question:
How can I save the value's of a form to a cookie, but in the textarea's of
that form the "hard returns" must be saved with it?
I have this code:





<html><HEAD>
<SCRIPT LANGUAGE="JavaScript">
var arrRecords = new Array();
var arrCookie = new Array();
var recCount = 0;
var strRecord="";
expireDate = new Date;
expireDate.setDate(expireDate.getDate()+365);

function cookieVal(cookieName) {
thisCookie = document.cookie.split("; ")
for (i = 0; i < thisCookie.length; i++) {
if (cookieName == thisCookie.split("=")[0]) {
return thisCookie.split("=")[1];
}
}
return 0;
}

function loadCookie() {
if(document.cookie != "") {
if(cookieVal("Records") != ""){
arrRecords = cookieVal("Records").split(",");
}
currentRecord();
}
}

function setRec() {
strRecord = "";
for(i = 0; i < document.frm1.elements.length; i++) {
strRecord = strRecord + document.frm1.elements.value + ":";
}
arrRecords[recCount] = strRecord;
document.frm2.add.value = " NEW ";
document.cookie = "Records="+arrRecords+";expires=" +
expireDate.toGMTString();
}


function newRec() {
switch (document.frm2.add.value) {
case " NEW " :
varTemp = recCount;
for(i = 0; i < document.frm1.elements.length; i++) {
document.frm1.elements.value = ""
}
recCount = arrRecords.length;
document.frm2.add.value = "CANCEL";
break;
case "CANCEL" :
recCount = varTemp;
document.frm2.add.value = " NEW ";
currentRecord();
break;
}
}

function countRecords() {
document.frm2.actual.value = "Record " + (recCount+1)+";
"+arrRecords.length+" saved records";
}

function delRec() {
arrRecords.splice(recCount,1);
navigate("previous");
setRec();
}

function currentRecord() {
if (arrRecords.length != "") {
strRecord = arrRecords[recCount];
currRecord = strRecord.split(":");
for(i = 0; i < document.frm1.elements.length; i++) {
document.frm1.elements.value = currRecord;
}
}
}

function navigate(control) {
switch (control) {
case "first" :
recCount = 0;
currentRecord();
document.frm2.add.value = " NEW ";
break;
case "last" :
recCount = arrRecords.length - 1;
currentRecord();
document.frm2.add.value = " NEW ";
break;
case "next" :
if (recCount < arrRecords.length - 1) {
recCount = recCount + 1;
currentRecord();
document.frm2.add.value = " NEW ";
}
break;
case "previous" :
if (recCount > 0) {
recCount = recCount - 1;
currentRecord();
}
document.frm2.add.value = " NEW ";
break;
default:
}
}

// Splice method Protype Function
// Peter Belesis, Internet.com
// http://www.dhtmlab.com/

function pageLoad(){
if (!Array.prototype.splice) {
function array_splice(ind,cnt) {
if (arguments.length == 0) return ind;
if (typeof ind != "number") ind = 0;
if (ind < 0) ind = Math.max(0,this.length + ind);
if (ind > this.length) {
if (arguments.length > 2) ind = this.length;
else return [];
}
if (arguments.length < 2) cnt = this.length-ind;
cnt = (typeof cnt == "number") ? Math.max(0,cnt) : 0;
removeArray = this.slice(ind,ind+cnt);
endArray = this.slice(ind+cnt);
this.length = ind;
for (var i = 2; i < arguments.length; i++) {
this[this.length] = arguments;
}
for(var i = 0; i < endArray.length; i++) {
this[this.length] = endArray;
}
return removeArray;
}
Array.prototype.splice = array_splice;
}
recCount = 0;
loadCookie();
countRecords();
}

</script>
</HEAD>

<body bgcolor="black" text="red" onLoad="pageLoad()"><center>

<center>
<form name="frm1">
<table width="391" border="1" align="center" resize="none">
<!--DWLayoutTable-->
<tr>
<td width="381" height="310" valign="top"><textarea name="textarea"
cols="57" rows="5">1) I want to save this text
2) in a cookie,
3) and save the "hard returns" with it...</textarea>
<BR> <textarea name="textarea2" cols="57" rows="5">and when I save
that text in a cookie...
It looks like the textarea underneath!</textarea> <BR>
<textarea name="textarea3" cols="57" rows="5">1) I want to save
this text__2) in a cookie, __3) and save the "hard returns" with
it...</textarea></td>
</tr>
<tr>
<td height="6"></td>
</tr>
</table>
</form>
<form name="frm2">
<table align="center" border="1" resize="none">
<tr>
<td align="center">
<input type="button" name="first" value="|<< "
onClick="navigate('first');countRecords()">
<input type="button" name="previous" value=" < "
onClick="navigate('previous');countRecords()">
<input type="button" name="next" value=" > "
onClick="navigate('next');countRecords()">
<input type="button" name="last" value=" >>|"
onClick="navigate('last');countRecords()">
<input type="box" name="actual" size=30>
</td>
</tr>
<tr>
<td align="center">
<input type="button" name="add" value=" NEW "
onClick="newRec();countRecords()">
<input type="button" name="set" value="SAVE RECORD"
onClick="setRec();countRecords()">
<input type="button" name="del" value="Delete"
onClick="delRec();countRecords()">
</td>
</tr>
</table>
</form>
</center>
</body></html>







I know, when you want to save "hard returns" in a cookie, you need to
escape() the value of a textarea when saving it, and here's how I've
modifided that in the code:

function setRec() {
strRecord = "";
for(i = 0; i < document.frm1.elements.length; i++) {
strRecord = strRecord + document.frm1.elements.value + ":";
}
arrRecords[recCount] = strRecord;
document.frm2.add.value = " NEW ";
document.cookie = "Records="+escape(arrRecords)+";expires=" +
expireDate.toGMTString();
}



Works fine but my big question is: where can I Unescape the value when
loading the cookie?

Hope anyone can help me out on this one,
Thanks for any insight!

Koen
 
D

Dr John Stockton

JRS: In article <[email protected]>, seen in
expireDate = new Date;
expireDate.setDate(expireDate.getDate()+365);

That expires a day early 25% of the time.

expireDate.setMonth(expireDate.getMonth()+12);

That, at a cost of one more character, gives the right date without any
getYear/getFullYear concern.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,013
Latest member
KatriceSwa

Latest Threads

Top