Sunday, May 30, 2010

Save and restore form information using cookies

// -----------------------------------------------------//
// SAVE FORM FIELD SELECTIONS IN COOKIES         //
// formcookie_saverestore.js                //
// Written by Tony Davis, T. Davis Consulting, Inc.    //
// Date written: September 27, 2005            //
// Email: tony@tdavisconsulting.com            //
// Web site: http://www.tdavisconsulting.com        //
// -----------------------------------------------------//

// instructions:
// ------------
// Change <BODY>
// to <BODY onunload="saveSelections(document.forms[0])"> and
// Change </FORM>
// TO </FORM><SCRIPT language=JavaScript type="">loadSelections(document.forms[0]);</SCRIPT>
// see a working example at: http://www.tdavisconsulting.com/formcookie
//

//
// ------------------------------------------------
// This function will concatentate all the fields in
// in the form into one string, delimited by a PIPE
// symbol, into one cookie. The cookie name is the
// same name as the form name. ALL fields are saved.
// ------------------------------------------------
//

function saveSelections(frm) {
        var setvalue;
        var fieldType;
        var index;
        var formname = frm.name;

        // Expire cookie in 999 days.
        var today = new Date();
        var exp   = new Date(today.getTime()+999*24*60*60*1000);

        var string = "formname=" + formname + "|";
        var cookieName = formname;

        //alert(exp);
        //alert(formname);

        var n = frm.length;
        for (i = 0; i < n; i++)

        {
            e         = frm[i].name;
            fieldValue  = frm[i].value;
            fieldType   = frm[i].type;

            //alert(e);
            //alert(fieldType);
            //alert(fieldValue);

            //
            // RADIO BUTTON
            //
            if (fieldType == "radio") {
            //alert(frm.elements[e].length);
                for (x=0; x < frm.elements[e].length; x++) {
                    if (frm.elements[e][x].checked)
                    {
                    index = x
                    }
                }
            string = string + index + "\|";
            }

            //
            // TEXT, TEXTAREA, and DROPDOWN
            //
            if ((fieldType == "text") ||
                (fieldType == "textarea") ||
                (fieldType == "select-one"))
            {
                string = string + frm.elements[e].value + "\|";
                //alert("text");
            }

            //
            // CHECKBOX
            //
            if (fieldType == "checkbox")
            {
                if (frm.elements[e].checked==true) {
                    var setvalue = "1";
                    }
                if (frm.elements[e].checked==false) {
                    var setvalue = "0";
                    }
            string = string + setvalue + "\|";
            //alert("checkbox");
            }

            //
            // HIDDEN field
            //
            if (fieldType == "hidden")
            {
                string = string + frm.elements[e].value + "\|";
                //alert("text");
            }
        }

//alert(string);
setCookie(cookieName, string, exp); }

//
// LOAD FORM FIELD SELECTIONS FROM SAVED COOKIES
//

function loadSelections(frm) {
var e;
var z;
var x;
var cookieName;
var fieldArray;
var fieldValues;
var fieldValue;

var formname = frm.id;

// Retrieve form elements from cookie and split into array.

cookieName  = formname;
fieldValues = getCookie(cookieName);
fieldArray  = fieldValues.split("\|");

//alert(fieldArray);
//alert(fieldArray[0]);
//alert(fieldArray[1]);
//alert(fieldArray[2]);
//alert(fieldArray[3]);

        var n = frm.length;
        for (i = 0; i < n; i++) {
            e = frm[i].name;
            z = i;
            z++;
            var fieldType  = frm[i].type;
            var fieldValue = fieldArray[z];

            //
            // TEXT, TEXTAREA, and DROPDOWN
            //
            if ((fieldType == "text") ||
                (fieldType == "textarea") ||
                (fieldType == "select-one"))
            {
                frm.elements[e].value = fieldValue;
                //alert(e);
                //alert(fieldValue);
            }

            // CHECKBOX
            //
            if (fieldType == "checkbox")
            {
                fld_checkbox = fieldValue;
                if (fld_checkbox == "1") {
                    frm.elements[e].checked = true;
                }
            }

            // RADIO BUTTON
            //
            if (fieldType == "radio") {
                x = fieldValue;
                //alert(x);
                frm.elements[e][x].checked = true;
            }

            //
            // HIDDEN field
            //
            if (fieldType == "hidden")
            {
                frm.elements[e].value = fieldValue;
                }
        }
}

/// COOKIE FUNCTIONS

function setCookie(name, value, expires, path, domain, secure) {
document.cookie= name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}

function getCookie(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return null;
} else {
begin += 2;
}
var end = document.cookie.indexOf(";", begin);
if (end == -1) {
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
}

 

 

source:http://javascript.internet.com/cookies/save-and-restore-form-cookies.html

No comments:

Post a Comment