Hi guys,
I have a cookie based form saver in Java which I found on the Internet. It works fine, however I want to limit the saved forms to certain form fields and exclude for example hidden fields and some other fields that should not be saved. Here is the code…
var expDays = 100;
var exp = new Date();
exp.setTime(exp.getTime() + (expDays*24*60
function getCookieVal (offset) {
var endstr = document.cookie.indexOf (“;”, offset);
if (endstr == -1) { endstr = document.cookie.length; }
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {
var arg = name + “=”;
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg) return getCookieVal (j);
i = document.cookie.indexOf(” “, i) + 1;
if (i == 0) break;
}
return null;
}
function SetCookie (name, value) {
var argv = SetCookie.arguments;
var argc = SetCookie.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] : false;
document.cookie = name + “=” + escape (value) +
((expires == null) ? “” : (“; expires=” + expires.toGMTString())) +
((path == null) ? “” : (“; path=” + path)) +
((domain == null) ? “” : (“; domain=” + domain)) +
((secure == true) ? “; secure” : “”);
}
function cookieForms() {
var mode = cookieForms.arguments[0];
for(f=1; f<cookieForms.arguments.length; f++) {
formName = cookieForms.arguments[f];
if(mode == ‘open’) {
cookieValue = GetCookie(‘saved_’+formName);
if(cookieValue != null) {
var cookieArray = cookieValue.split(‘#cf#’);
if(cookieArray.length == document[formName].elements.length) {
for(i=0; i<document[formName].elements.length; i++) {
if(cookieArray[i].substring(0,6) == ‘select’) { document[formName].elements[i].options.selectedIndex = cookieArray[i].substring(7, cookieArray[i].length-1); }
else if((cookieArray[i] == ‘cbtrue’) || (cookieArray[i] == ‘rbtrue’)) { document[formName].elements[i].checked = true; }
else if((cookieArray[i] == ‘cbfalse’) || (cookieArray[i] == ‘rbfalse’)) { document[formName].elements[i].checked = false; }
else { document[formName].elements[i].value = (cookieArray[i]) ? cookieArray[i] : ”; }
}
}
}
}
if(mode == ‘save’) {
cookieValue = ”;
for(i=0; i<document[formName].elements.length; i++) {
fieldType = document[formName].elements[i].type;
if(fieldType == ‘password’) { passValue = ”; }
else if(fieldType == ‘checkbox’) { passValue = ‘cb’+document[formName].elements[i].checked; }
else if(fieldType == ‘radio’) { passValue = ‘rb’+document[formName].elements[i].checked; }
else if(fieldType == ‘select-one’) { passValue = ‘select’+document[formName].elements[i].options.selectedIndex; }
else { passValue = document[formName].elements[i].value; }
cookieValue = cookieValue + passValue + ‘#cf#’;
}
cookieValue = cookieValue.substring(0, cookieValue.length-4); // Remove last delimiter
SetCookie(‘saved_’+formName, cookieValue, exp);
}
}
}
Any input would be appreciated.
Stuart