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面向对象编程
Mar 02 Javascript
js跨域和ajax 跨域问题的实现思路
Sep 05 Javascript
JavaScript中valueOf函数与toString方法深入理解
Dec 02 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
Apr 12 Javascript
javascript实现带下拉子菜单的导航菜单效果
May 14 Javascript
node.js文件上传处理示例
Oct 27 Javascript
学习Vue组件实例
Apr 28 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
p5.js实现简单货车运动动画
Oct 23 Javascript
JS forEach跳出循环2种实现方法
Jun 24 Javascript
vue数据更新UI不刷新显示的解决办法
Aug 06 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
Sep 21 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数据库类
2009/05/27 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
详解PHP归并排序的实现
2016/10/18 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
python使用cPickle模块序列化实例
2014/09/25 Python
python监控键盘输入实例代码
2018/02/09 Python
Python学习笔记之open()函数打开文件路径报错问题
2018/04/28 Python
python实现事件驱动
2018/11/21 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
七年级政治教学反思
2014/02/03 职场文书
中学校庆方案
2014/03/17 职场文书
请假条范文大全
2014/04/10 职场文书
安全生产责任书范本
2014/04/15 职场文书
实习单位鉴定评语
2014/04/26 职场文书
校园安全演讲稿
2014/05/09 职场文书
甜品店创业计划书
2014/08/14 职场文书
六年级学生期末评语
2014/12/26 职场文书
歌舞青春观后感
2015/06/10 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python