随笔开头,我不得不吐槽,为什么我的随笔每次发布之后,都会在分分钟之内移出首页.好气啊!!

进入正题了,项目中有许多表单输入框要填写,还有一些单选复选框之类的.用户可能在填写了大量的信息之后,不小心刷新了页面或者出现了什么异常,导致页面上填写的信息消失了.还得重新填写信息,麻烦至极.

html5推出了本地存储的功能,localStorage以及sessionStorage.我打算利用他们来实现一个临时存储的功能,即使页面刷新,数据依然保留.

1.页面初始如下:

 2.代码如下

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>页面刷新后保留表单的值</title>
<style>
#savehistory{
width: 400px;margin: 0 auto;
}
.userselect{
-moz-user-select: none;
-webkit-user-select: none;
}
</style>
</head>
<body>
<div id="savehistory">
<div class="userselect">hhhhhhhhhh</div>
<input class="userselect" type="text"><br/>
<input type="text"><br/>
<input type="text"><br/>
<input type="text"><br/>
<input type="text"><br/>
<input type="button" value="按钮1"><br/>
<input type="button" value="按钮2"><br/>
<input type="radio" name="sex"><br/>
<input type="radio" name="sex"><br/>
<input type="checkbox"><br/>
<input type="checkbox"><br/>
<input type="checkbox"><br/>
<button id="save">一键缓存</button>
</div>
</body>
<script src="jquery-1.7.2.min.js"></script>
<script>
$(function () {
var localMsg;
if(window.localStorage.formHistory){
localMsg=JSON.parse(window.localStorage.formHistory);
}
if(localMsg && localMsg.length>=1){
var realIndex=0;
for(var i=0;i<$('#savehistory input').length;i++){
if($($('#savehistory input')[i])[0].type=='text'){
$($('#savehistory input')[i]).val(localMsg[realIndex].text)
realIndex++;
}else if($($('#savehistory input')[i])[0].type=='radio'){
$($('#savehistory input')[i]).prop('checked',localMsg[realIndex].radio)
realIndex++;
}else if($($('#savehistory input')[i])[0].type=='checkbox'){
$($('#savehistory input')[i]).prop('checked',localMsg[realIndex].checkbox)
realIndex++;
}
}
}
$('#save').click(function () {
var history=[];
window.localStorage.formHistory='';
for(var i=0;i<$('#savehistory input').length;i++){
if($($('#savehistory input')[i])[0].type=='text'){
history.push({"text":$($('#savehistory input')[i]).val()})
}else if($($('#savehistory input')[i])[0].type=='radio'){
history.push({"radio":$($('#savehistory input')[i]).attr('checked') ? 'checked' :''})
}else if($($('#savehistory input')[i])[0].type=='checkbox'){
history.push({"checkbox":$($('#savehistory input')[i]).attr('checked') ? 'checked' :''})
}
}
window.localStorage.formHistory=JSON.stringify(history)
})
})
</script>
</html>

  3.在表单中填写好信息,并点击一键缓存

    4.将表单信息存储在localStorage中:

 5.f5刷新之后,js代码会去遍历localStorage.formHistory,然后取出来放在对应的位置.赶快来试一试吧!

html5 localStorage实现表单本地存储的更多相关文章

  1. html5中form表单新增属性以及改良的input标签元素的种类

    在HTML5中,表单新增了一些属性,input标签也有了更多的type类型,有些实现了js才能实现的特效,但目前有些浏览器不能全部支持.下面是一些h5在表单和input标签上的一些改动. <!D ...

  2. HTML5的form表单属性

    form:HTML4中,表单内的从属元素必须书写在<form></form>之内,但是在HTML5中,表单的从属元素可以处于页面的任何位置,然后为其添加form属性,属性值为f ...

  3. HTML5跨浏览器表单及HTML5表单的渐进增强

    HTML5跨浏览器表单 http://net.tutsplus.com/tutorials/html-css-techniques/how-to-build-cross-browser-html5-f ...

  4. HTML5 学习笔记 表单属性

    HTML5新的表单属性 HTML5 的form和input 标签添加了几个新的属性 <form>新属性 autocomplete novalidate input 新属性 autocomp ...

  5. [H5表单]html5自带表单验证体验优化及提示气泡修改

    慕课网之前录制的视频,js/jquery各种宽高的理解和应用,最近终于上线了.还有一个html5左侧导航没有上线!最近慕课网系列课程让我录制一个html5表单验证的课程.今天就稍微说一下表单验证!另外 ...

  6. HTML5新增的表单验证功能

    一.HTML5表单的特点: HTML5 表单增加了许多内置的控件和控件属性 XHTML 中需要放在 form 之中的诸如 input/button/select/textarea 等标签元素,在 HT ...

  7. HTML5基础扩展——地理位置、本地存储、缓存

    HTML5扩展,继上两篇博客,我们来看一下HTML5的一些扩展的功能,由于HTML5更多是为了兼容电脑浏览器,安卓浏览器,苹果浏览器更多浏览器,或者说为这些浏览器提供一个统一的标准.因此目前在手机上的 ...

  8. HTML5学习总结-07 WebStorage 本地存储

    一 Storage sessionStorage session临时回话,从页面打开到页面关闭的时间段 窗口的临时存储,页面关闭,本地存储消失 localStorage 永久存储(可以手动删除数据)S ...

  9. HTML5 web Form表单验证实例

    HTML5 web Form 的开发实例! index.html <!DOCTYPE html> <html> <head> <meta charset=&q ...

随机推荐

  1. 关于JS 事件冒泡和onclick,click,on()事件触发顺序

    今天在给JQgrid中的标签添加click事件的时候,发现一个问题. JQgrid的table中,点击任何位置,都会勾选点击行的checkbox,而我希望在点击我的标签的时候,不要勾选checkbox ...

  2. ABP 仓储VIEW实现

    每个view实体加个ID 对应实体属性配置到View的列 View添加一列类似自增序列 ROW_NUMBER() OVER(ORDER BY getdate()) AS ID codefirst时 删 ...

  3. Java 基础之-枚举

      目录(?)[-] 用法一常量 用法二switch 用法三向枚举中添加新方法 用法四覆盖枚举的方法 用法五实现接口 用法六使用接口组织枚举 用法七关于枚举集合的使用   DK1.5引入了新的类型-- ...

  4. (转)如何在一台电脑上开启多个tomcat 和配置让系统识别哪个具体的tomcat

    大家基本上都只在一台电脑上面启动一个Tomcat,而启动多个Tomcat会提示报错等相关故障.而假如调试负载均衡及集群的时候,需要在一台电脑上面开启多个Tomcat,那么怎么开启呢? 方法/步骤 首先 ...

  5. Spring SpringMVC和Mybatis整合

    1.引入所要的jar包 2.创建Mybatis的sqlMapConfig.xml配置文件,该文件中可以配置mybaits的相关参数,数据源不在这里配置. <?xml version=" ...

  6. <停车位>version1.0

    <停车卫> 产品需求说明书 文档版本号: Version 1.0 文档编号: xxxx 文档密级: 归属部门/项目: 产品名: 停车卫 子系统名: 编写人: kina 编写日期: 2015 ...

  7. Spring 4 官方文档学习(十四)WebSocket支持

    个人提示:如果需要用到页面推送,高频且要低延迟,WebSocket无疑是最佳选择.否则还是轮询和long polling吧. 做了一个小demo放在码云上,有兴趣的可以看一下,简单易懂:websock ...

  8. 使用Scala实现文件单词计数

    package com.dtapp.base import scala.io.Source object WCntApp { def main(args: Array[String]) { val f ...

  9. Process类

    public bool Process.Start () 启动(或重用)此 Process 组件的 StartInfo 属性指定的进程资源,并将其与该组件关联. public bool Process ...

  10. 【Java】使用iText生成PDF文件

    iText介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...