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 相关文章推荐
Sample script that displays all of the users in a given SQL Server DB
Jun 16 Javascript
JQuery 写的个性导航菜单
Dec 24 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
Aug 28 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
Oct 17 Javascript
JQuery动态添加Select的Option元素实现方法
Aug 29 Javascript
简单谈谈JS数组中的indexOf方法
Oct 13 Javascript
jQuery.datatables.js插件用法及api实例详解
Oct 28 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
Feb 19 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
Dec 07 Javascript
微信小程序实现获取小程序码和二维码java接口开发
Mar 29 Javascript
angular组件间传值测试的方法详解
May 07 Javascript
JS中作用域以及变量范围分析
Jul 18 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
用PHP实现的随机广告显示代码
2007/06/14 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
Javascript验证方法大全
2015/09/21 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
Python字符转换
2008/09/06 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
Python类的继承用法示例
2019/01/31 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
Python3常用内置方法代码实例
2019/11/18 Python
基于Python正确读取资源文件
2020/09/14 Python
深圳-东方伟业笔试部分
2015/02/11 面试题
老师自我鉴定范文
2013/12/25 职场文书
职工运动会邀请函
2014/02/02 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
2014大学生党员评议个人总结
2014/09/22 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
vue中 this.$set的使用详解
2021/11/17 Vue.js