formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)


Posted in Javascript onJanuary 20, 2012

原理很简单,通过本地存储机制(userData或者localStorage),存储表单中元素的状态到本地. 需要时可以把所存储的状态还原到表单元素上.

其中也用了json数据格式, 之前想对插件中所需的功能,从零开始写,但是觉得太冗余,没必要.就基于另外2个plugin现实.

分别是:jquery.json 和 jStorage. 这两个插件本身实用小巧, api简单易用, 其中jStorage在老一点的浏览器(不支持原生JSON操作)中需要用到jquery.json或者json2

formStorage对jQuery对象扩展了3个方法, 对非form标签无效.

存储时调用: $('#myform').formStore(/*excludes*/), 此方法可以传入一个包含表单元素id的数组,指定哪些元素状态不需要存储

还原时调用: $('#myform').formRestore()

清除存储调用: $('#myform').destroyStore(), 之后在调用formRestore将不起作用, 因为对应的本地存储数据已经删除

NOTE: 为了还原时能定位元素, form和其表单元素都需要给予id, 保存时以form的id做为key, 所有表单元素的状态组织成一个json串做为value.

其中input的type如果为button, file, submit, reset, password, image中的其中一个, 该标签的状态不会被存储. 如果表单中有textarea,而且文本内容较大,

不建议实用, 尤其在IE6,7中.

下面是一张各个浏览器本地存储容量的参考图(来自jStorage的主页):

formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)

好吧, 貌似图里面的浏览器老了点...

下面是个简单的实例:

<form id="myform" action=""> 
<input id="name" name="name" type="text" value="" /> 
<input id="password" name="pwd" type="password" value="" /> 
<input type="checkbox" name="checkname" id="check1" value="checkvalue1" /> 
<input type="checkbox" name="checkname" id="check2" value="checkvalue2" /> 
<input type="radio" name="radioname" id="radio1" value="radiovalue1" /> 
<input type="radio" name="radioname" id="radio2" value="radiovalue2" /> 
<select name="selectoptions" id="select1"> 
<option value="option0">option0</option> 
<option value="option1">option1</option> 
<option value="option2">option2</option> 
<option value="option3">option3</option> 
</select> 
<textarea name="area" id="area" cols="30" rows="10"> 
</textarea> 
<button type="button" id="store">store</button> 
<button type="button" id="restore">restore</button> 
<button type="button" id="destroy">destroy</button> 
</form>

实例中对应的js如下:
$('#store, #restore, #destroy').on('click', function() { 
if(this.id == 'store') 
$('#myform').formStore(); 
else if(this.id == 'restore') 
$('#myform').formRestore(); 
else 
$('#myform').destroyStore(); 
});

最后, 如果你感兴趣, 可以下载此插件(点击下载formStorage), 解压后, 直接运行里面的test.html即可, 源码没有压缩. 因为时间较短, 或许有不够完善的地方, 欢迎留言讨论.
Javascript 相关文章推荐
innerText和textContent对比及使用介绍
Feb 27 Javascript
JS 在指定数组中随机取出N个不重复的数据
Jun 10 Javascript
深入探寻javascript定时器
Jan 02 Javascript
JavaScript日期时间与时间戳的转换函数分享
Jan 31 Javascript
跟我学习javascript的作用域与作用域链
Nov 19 Javascript
javascript回到顶部特效
Jul 30 Javascript
JS实现旋转木马式图片轮播效果
Jan 18 Javascript
jquery easyui如何实现格式化列
Jul 30 jQuery
详解react-redux插件入门
Apr 19 Javascript
Vue中用props给data赋初始值遇到的问题解决
Nov 27 Javascript
Nuxt.js实战和配置详解
Aug 05 Javascript
浅析vue中的provide / inject 有什么用处
Nov 10 Javascript
json的前台操作和后台操作实现代码
Jan 20 #Javascript
Prototype源码浅析 Enumerable部分(二)
Jan 18 #Javascript
JS中的public和private对象,即static修饰符
Jan 18 #Javascript
DOM 中的事件处理介绍
Jan 18 #Javascript
深入理解JavaScript系列(13) This? Yes,this!
Jan 18 #Javascript
JavaScript中常用的运算符小结
Jan 18 #Javascript
jQuery LigerUI 使用教程表格篇(1)
Jan 18 #Javascript
You might like
PHP分页函数代码(简单实用型)
2010/12/02 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
PHP实现事件机制的方法
2015/07/10 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
PHP封装的简单连接MongoDB类示例
2019/02/13 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
小议javascript 设计模式 推荐
2009/10/28 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
js性能优化技巧
2015/11/29 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
react的hooks的用法详解
2020/10/12 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
python序列类型种类详解
2020/02/26 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
外企C语言笔试题
2013/11/10 面试题
保安部任务及岗位职责
2014/02/25 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
教师个人发展总结
2015/02/11 职场文书
人民币符号
2022/02/17 杂记
React更新渲染原理深入分析
2022/12/24 Javascript