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对象和属性的创建方法
Jan 15 Javascript
JavaScript 学习初步 入门教程
Mar 25 Javascript
node.js中的fs.chmodSync方法使用说明
Dec 18 Javascript
javascript实现获取服务器时间
May 19 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
Jan 13 Javascript
基于JQuery打造无缝滚动新闻步骤详解
Mar 31 Javascript
JS+Canvas 实现下雨下雪效果
May 18 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
Mar 31 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
Apr 21 Javascript
关于微信小程序bug记录与解决方法
Aug 15 Javascript
vue+springboot实现项目的CORS跨域请求
Sep 05 Javascript
详解mpvue scroll-view自动回弹bug解决方案
Oct 01 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获取远程图片并把它保存到本地的代码
2008/04/07 PHP
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
浅谈PHP封装CURL
2019/03/06 PHP
jquery对dom的操作常用方法整理
2013/06/25 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
让python 3支持mysqldb的解决方法
2017/02/14 Python
django解决跨域请求的问题详解
2019/01/20 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
Python实现微信机器人的方法
2019/09/06 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
Python实现FLV视频拼接功能
2020/01/21 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
为什么使用接口?
2014/08/13 面试题
软件工程师面试题
2012/06/25 面试题
介绍一下Ruby的特点
2013/01/20 面试题
制冷与电控专业应届生求职信
2013/11/11 职场文书
2013英文求职信模板范文
2013/11/15 职场文书
国培计划培训感言
2014/03/11 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL
图文详解matlab原始处理图像几何变换
2021/07/09 Python