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 相关文章推荐
IE和firefox浏览器的event事件兼容性汇总
Dec 06 Javascript
jQuery中add实现同时选择两个id对象
Oct 22 Javascript
工作需要写的一个js拖拽组件
Jul 28 Javascript
jQuery取得select选择的文本与值的示例
Dec 09 Javascript
Node.js中的模块机制学习笔记
Nov 04 Javascript
javascript 实现 原路返回
Jan 21 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
Mar 10 Javascript
Three.js加载外部模型的教程详解
Nov 10 Javascript
浅谈vuepress 踩坑记
Apr 18 Javascript
JavaScript实现构造json数组的方法分析
Aug 17 Javascript
vue实现移动端图片上传功能
Dec 23 Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 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设计模式小结
2013/02/15 PHP
php Calender(日历)代码分享
2014/01/03 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
基于JQuery制作的产品广告效果
2010/12/08 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
基于Python的PIL库学习详解
2019/05/10 Python
python SVM 线性分类模型的实现
2019/07/19 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
Python实现画图软件功能方法详解
2020/07/28 Python
详解Python流程控制语句
2020/10/28 Python
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
军训口号
2014/06/13 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python