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 相关文章推荐
JavaScript基础语法让人疑惑的地方小结
May 23 Javascript
js获取height和width的方法说明
Jan 06 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
Aug 07 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 Javascript
js一维数组、多维数组和对象的混合使用方法
Apr 03 Javascript
Node.js下自定义错误类型详解
Oct 17 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
Nov 16 Javascript
JS跨域请求外部服务器的资源
Feb 06 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
Mar 03 Javascript
layui复选框限制选择个数的方法
Sep 18 Javascript
JS Web Flex弹性盒子模型代码实例
Mar 10 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
Nov 24 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
星际玩家的三大定律
2020/03/04 星际争霸
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
将文本输入框内容加入表中的js代码
2013/08/18 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
Python可变参数函数用法实例
2015/07/07 Python
python实现杨辉三角思路
2017/07/14 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
详解python with 上下文管理器
2020/09/02 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
办公室副主任岗位职责
2013/11/25 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
歌剧魅影观后感
2015/06/05 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
Java数据结构之堆(优先队列)
2022/05/20 Java/Android