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 相关文章推荐
jquery提升性能最佳实践小结
Dec 06 Javascript
JQuery限制复选框checkbox可选中个数的方法
Apr 20 Javascript
js实现可控制左右方向的无缝滚动效果
May 29 Javascript
浅谈js里面的InttoStr和StrtoInt
Jun 14 Javascript
用原生js统计文本行数的简单示例
Aug 19 Javascript
React应用中使用Bootstrap的方法
Aug 15 Javascript
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
详解JavaScript中关于this指向的4种情况
Apr 18 Javascript
javascript实现的时间格式加8小时功能示例
Jun 13 Javascript
node.JS二进制操作模块buffer对象使用方法详解
Feb 06 Javascript
vue-cli创建的项目中的gitHooks原理解析
Feb 14 Javascript
Vue axios获取token临时令牌封装案例
Sep 11 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设计模式 Prototype (原型模式)代码
2011/06/26 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
django中send_mail功能实现详解
2018/02/06 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
铁路工务反思材料
2014/02/07 职场文书
考核评语大全
2014/04/29 职场文书
应急管理培训方案
2014/06/12 职场文书
植树节口号
2014/06/21 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
骨干教师考核评语
2014/12/31 职场文书
企业员工辞职信范文
2015/05/12 职场文书
四年级作文之植物
2019/09/20 职场文书