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 sortable效果 代码有错但值得看看
Nov 05 Javascript
百度判断手机终端并自动跳转js代码及使用实例
Jun 11 Javascript
JavaScript使用function定义对象并调用的方法
Mar 23 Javascript
javascript获取本机操作系统类型的方法
Aug 13 Javascript
jQuery实现图像旋转动画效果
May 29 Javascript
Bootstrap源码解读下拉菜单(4)
Dec 23 Javascript
纯原生js实现贪吃蛇游戏
Apr 16 Javascript
详解webpack babel的配置
Jan 09 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
Jan 30 Javascript
详解JavaScript中的坐标和距离
May 27 Javascript
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
Javascript实现关闭广告效果
Jan 29 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获取服务器时间的实现代码
2013/06/07 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
destoon官方标签大全
2014/06/20 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
原生js编写基于面向对象的分页组件
2016/12/05 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
Python之py2exe打包工具详解
2017/06/14 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
用python与文件进行交互的方法
2018/03/01 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
python软件都是免费的吗
2020/06/18 Python
python多线程和多进程关系详解
2020/12/14 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
C语言基础笔试题
2013/04/27 面试题
2014年公司迎新年活动方案
2014/02/24 职场文书
学校花圃的标语
2014/06/18 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
锅炉工岗位职责
2015/02/13 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
小学感恩主题班会
2015/08/12 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers