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 相关文章推荐
关于取不到由location.href提交而来的上级页面地址的解决办法
Jul 30 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
May 23 Javascript
jquery获得同源iframe内body下标签的值的方法
Sep 25 Javascript
JS基础随笔(菜鸟必看篇)
Jul 13 Javascript
jquery 动态合并单元格的实现方法
Aug 26 Javascript
解析jQueryEasyUI的使用
Nov 22 Javascript
JavaScript之Vue.js【入门基础】
Dec 06 Javascript
angular2 ng2 @input和@output理解及示例
Oct 10 Javascript
使用layer弹窗和layui表单实现新增功能
Aug 09 Javascript
Vue数据绑定简析小结
May 07 Javascript
解决layui的radio属性或别的属性没显示出来的问题
Sep 26 Javascript
JavaScript 空间坐标的使用
Aug 19 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
ini_set的用法介绍
2014/01/07 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
轮播图组件js代码
2016/08/08 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
Python程序中的观察者模式结构编写示例
2016/05/27 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
Python列表切片常用操作实例解析
2019/12/16 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
大专计算机个人求职的自我评价
2013/10/21 职场文书
房产委托公证书样本
2014/04/04 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
大学生预备党员自我评价
2015/03/04 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server