Cookie Stores Form Items Selected

[Total: 0    Average: 0/5]

This shows how to use a cookie construct to store off the items selected in a multiple list box in a form.

Head Code:

<script type=text/javascript>
// BEGIN COOKIE CONSTRUCT
function Cookie(document,name,hours,path,domain,secure) {
// any VAR in "this" that does not start with a "$" will
// be written into the cookie (read from also)
this.$doc = document
this.$name = name
if (hours) this.$expiration=new Date((new Date()).getTime()+hours*3600000); else this.$expiration = null
if (path) this.$path = path; else this.$path = null
if (domain) this.$domain = domain; else this.$domain = null
if (secure) this.$secure = true; else this.$secure = false
}

function CookieWrite() {
var cookieval=""
for(var prop in this) {
if ((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function') || prop == '') continue
if (cookieval != "") cookieval += '&'
cookieval+=prop+":"+escape(this[prop])
}
var cookie=this.$name+"="+cookieval
if (this.$expiration) cookie+='; expires=' + this.$expiration.toGMTString()
if (this.$path) cookie+='; path=' + this.$path
if (this.$domain) cookie+='; domain=' + this.$domain
if (this.$secure) cookie+='; secure'
//alert("writting cookie="+cookie)
this.$doc.cookie=cookie
}

function CookieRead() {
var allcookies=this.$doc.cookie
if (allcookies=="") {
return false
}
var start= allcookies.indexOf(this.$name+'=')
if (start== -1) {
return false
}
start += this.$name.length+1
var end=allcookies.indexOf(';',start)
if (end == -1) end=allcookies.length
var cookieval = allcookies.substring(start,end)
var a = cookieval.split('&')
for (var i=0;i<a.length;i++) a[i]=a[i].split(':')
for (var i=0;i<a.length;i++) this[a[i][0]]=unescape(a[i][1])
return true
}

function CookieDelete() {
var cookie = this.$name+'='
if (this.$path) cookie+='; path='+this.$path
if (this.$domain) cookie+='; domain='+this.$domain
cookie+='; expires=Fri, 02-Jan-1970 00:00:00 GMT' // MAKE IT EXPIRE!
this.$doc.cookie=cookie
}

new Cookie()
Cookie.prototype.write = CookieWrite
Cookie.prototype.del = CookieDelete
Cookie.prototype.read = CookieRead
// END COOKIE CONSTRUCT
</script>

Body Code:

<form name="exf1">
<select multiple size=6 name="s1">
    <option name=i1 value="i1">ONE
    <option name=i2 value="i2">TWO
    <option name=i3 value="i3">THREE
    <option name=i4 value="i4">FOUR
    <option name=i5 value="i5">FIVE
    <option name=i6 value="i6">SIX
</select>
</form>
<script type=text/javascript>
// this script must be defined AFTER the form!
var myCookie = new Cookie(document,"myForm",240)
if (myCookie.read()) {
  document.exf1.s1[0].selected=myCookie.one==1?true:false;
  document.exf1.s1[1].selected=myCookie.two==1?true:false;
  document.exf1.s1[2].selected=myCookie.three==1?true:false;
  document.exf1.s1[3].selected=myCookie.four==1?true:false;
  document.exf1.s1[4].selected=myCookie.five==1?true:false;
  document.exf1.s1[5].selected=myCookie.six==1?true:false;
}


function setCookie() {
  myCookie.one   = document.exf1.s1[0].selected?1:0;
  myCookie.two   = document.exf1.s1[1].selected?1:0;
  myCookie.three = document.exf1.s1[2].selected?1:0;
  myCookie.four  = document.exf1.s1[3].selected?1:0;
  myCookie.five  = document.exf1.s1[4].selected?1:0;
  myCookie.six   = document.exf1.s1[5].selected?1:0;
  myCookie.write();
}
</script>
<BR><a href="javascript:setCookie()">Set Cookie</a>
<BR><a href="javascript:document.location=document.location">Reload Page</a>

Times Viewed: 0

Leave a Reply

Your email address will not be published. Required fields are marked *