刚做的保存页面表单各元素当前值的组件,分享给大家
也欢迎到 e999.net 来讨论啦.
fsave.htc 文件:
<?xml version="1.0" encoding="gb2312" ?>
<!-- -----------------------------------------------------------------
//
// Copyright 2002 whiteland(e999.net) Corporation. All Rights Reserved.
//
// File: fsave.htc
//
// Description: 当页面离开或刷新时保存当前页面的表单元素的值
// 再次页面则读取保存的值到页面的表单中
//
// author: whiteclude
//---------------------------------------------------------------- -->
<public:component lightWeight="true" tagName="fsave" >
<public:defaults contentEditable="false" />
<public:attach event="oncontentready" onevent="initfsave()" />
<public:attach event="ondetach" onevent="cleanupfsave()" />
<public:attach event="onpropertychange" onevent="fsavepropertychange()" />
<public:method name="cleanupfsave()" />
<public:property name="ifsave" value="false" />
<public:property name="ifglobal" value="false" />
<script language="JScript">
//<[[CDATA[
var sforms,domain;
var timerun;
function initfsave() {
readoutcookietoform();
}
function readoutcookietoform() {
sforms = window.document.forms;
domain = window.document.domain;
if ( sforms != null ) {
for ( i = 0; i< sforms.length ; i++ ) {
for ( j = 0 ; j < sforms(i).length ; j++ ) {
switch( sforms(i).item(j).tagName.toLowerCase() ) {
case "input" :
switch( sforms(i).item(j).type.toLowerCase() ) {
case "text" :
case "hidden" :
if ( element.ifsave == "true" ) {
sforms(i).item(j).attachEvent("onchange",changeformitem);
}
if ( getCookie(sforms(i).name.toLowerCase()+"."+sforms(i).item(j).name.toLowerCase()) != null ) {
sforms(i).item(j).value = getCookie(sforms(i).name.toLowerCase()+"."+sforms(i).item(j).name.toLowerCase());
}
break;
case "radio" :
case "checkbox" :
if ( element.ifsave == "true" ) {
sforms(i).item(j).attachEvent("ondeactivate",changeformitem);
}
var unobjectname = sforms(i).item(j).name;
try {
if (sforms(i).all(unobjectname).length > 0) {
var currentobjser = null;
for( var k = 0 ; k < sforms(i).all(unobjectname).length ; k++ ) {
if ( sforms(i).all(unobjectname).item(k) == sforms(i).item(j) ) {
currentobjser = k;
break;
}
}
if ( getCookie(sforms(i).name.toLowerCase()+"."+sforms(i).item(j).name.toLowerCase()+"."+currentobjser) != null ) {
if ( getCookie(sforms(i).name.toLowerCase()+"."+sforms(i).item(j).name.toLowerCase()+"."+currentobjser) == "true" )
sforms(i).item(j).checked = true;
else
sforms(i).item(j).checked = false;
}
} else {
if ( getCookie(sforms(i).name.toLowerCase()+"."+sforms(i).item(j).name.toLowerCase()) != null ) {
if ( getCookie(sforms(i).name.toLowerCase()+"."+sforms(i).item(j).name.toLowerCase()) == "true" )
sforms(i).item(j).checked = true;
else
sforms(i).item(j).checked = false;
}
}
} catch (e) {
}
break;
default :
}
break;
case "textarea" :
if ( element.ifsave == "true" ) {
sforms(i).item(j).attachEvent("onchange",changeformitem);
}
if ( getCookie(sforms(i).name.toLowerCase()+"."+sforms(i).item(j).name.toLowerCase()) != null ) {
sforms(i).item(j).innerText = getCookie(sforms(i).name.toLowerCase()+"."+sforms(i).item(j).name.toLowerCase());
}
break;
case "select" :
default :
}
}
}
}
}
function changeformitem() {
var currentobject = null;
if ( changeformitem.arguments.length == 2 )
currentobject = arguments[1];
else {
currentobject = window.event.srcElement;
}
switch ( currentobject.tagName.toLowerCase() ) {
case "input" :
if ( findformname(currentobject) != null ) {
switch ( currentobject.type.toLowerCase() ) {
case "text" :
case "hidden" :
if ( element.ifglobal == "true" ) {
setCookie(findformname(currentobject).toLowerCase()+"."+currentobject.name.toLowerCase(),currentobject.value,"3","/");
} else {
setCookie(findformname(currentobject).toLowerCase()+"."+currentobject.name.toLowerCase(),currentobject.value,"1");
}
break;
case "radio" :
case "checkbox" :
var unobjectname = currentobject.name;
var currentform = findformobj(currentobject);
try {
if (currentform.all(unobjectname).length > 0) {
var currentobjser = null;
for( var k = 0 ; k < currentform.all(unobjectname).length ; k++ ) {
if ( currentform.all(unobjectname).item(k) == currentobject ) {
currentobjser = k;
break;
}
}
if ( element.ifglobal == "true" ) {
if ( currentobject.type.toLowerCase() == "radio" ) {
for( var k = 0 ; k < currentform.all(unobjectname).length ; k++ ) {
setCookie(findformname(currentobject).toLowerCase()+"."+currentobject.name.toLowerCase()+"."+k,currentform.all(unobjectname).item(k).checked,"3","/");
}
} else {