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 高级语法介绍
Jun 15 Javascript
基于jquery+thickbox仿校内登录注册框
Jun 07 Javascript
jquery ready()的几种实现方法小结
Jun 18 Javascript
仿JQuery输写高效JSLite代码的一些技巧
Jan 13 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
Jan 20 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
JavaScript表单验证实例之验证表单项是否为空
Jan 10 Javascript
AngularJS的ng Http Request与response格式转换方法
Nov 07 Javascript
vue实现nav导航栏的方法
Dec 13 Javascript
微信小程序多音频播放进度条问题
Aug 28 Javascript
JavaScript设计模式之装饰者模式实例详解
Jan 17 Javascript
jQuery实现本地存储
Dec 22 jQuery
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 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
PHP 实现重载
2021/03/09 PHP
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
python实现的简单猜数字游戏
2015/04/04 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
pycharm打开命令行或Terminal的方法
2019/01/16 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
药学专业个人自我评价
2013/11/11 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
村干部承诺书
2014/03/28 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
工程技术员岗位职责
2015/04/11 职场文书
小学教学工作总结2015
2015/05/13 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle