js+cookies实现自动保存草稿功能

29 篇文章 1 订阅

这个功能很常见。是为了防止浏览器崩溃或提交不成功而导致自己辛辛苦苦写就的东西消失掉。Gmail 里也这个东西。

现在提供一个js,js是网上下载的,它的原理是将该文本框的东西存储进一个 Cookie. 如果没提交成功(原因可能是浏览器崩溃),下次访问该页面时询问是否导入上次存储的东西。

html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:include="layout :: htmlhead" th:with="title='自动保存'"></head>
 <script th:inline="javascript" type="text/javascript">

</script>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
<div th:replace="fragments/head :: header"></div>

   <form action="#" method="POST" id="form1" onSubmit="AutoSaveInCookies.deleteCookie('AutoSaveContent')">
    <table style="width: 100%;">
      <tr>
        <td  style="text-align: center"> 文章名 </td>
        <td><input id="Name" type="text" name="Name" /></td>
      </tr>
      <tr>
        <td style="text-align: center"> 文章内容 </td>
        <td ><textarea id="Content"  name="Content" onkeyup="AutoSaveInCookies.autoSave(this);" onselect="AutoSaveInCookies.autoSave(this);" onclick="AutoSaveInCookies.autoSave(this);" ></textarea></td>
      </tr>
      <tr>
        <td colspan="2" style="text-align: center"><input name="提交" type="submit" id="Button1" value="提交" /></td>
      </tr>
    </table>
    </form>

    <div th:replace="fragments/footer :: footer"></div>
    <script src="/js/test.js"></script>
</div>
</body>
</html>

js:

var AutoSaveInCookies={
		autoSave:function(it){
			var _value = it.value;	
			if (!_value) {
				var _LastContent = this.getCookie('AutoSaveContent');
				
				if (!_LastContent) return;
				
				if (confirm("Load Last AutoSave Content?")) {
					it.value = _LastContent; 
					return true;
				}else{
					this.deleteCookie('AutoSaveContent');
				}			
			} else {
				var expDays = 30;
				var exp = new Date();
				exp.setTime( exp.getTime() + (expDays * 86400000) ); // 24*60*60*1000 = 86400000
				var expires='; expires=' + exp.toGMTString();
				// SetCookie
				document.cookie = "AutoSaveContent=" + escape (_value) + expires;
			}
		 },
     getCookie:function(name){
    	 var arg=name+"=";
    		var alen=arg.length;
    		var clen=document.cookie.length;
    		var i = 0;
    		while (i<clen){
    			var j=i+alen;
    			if (document.cookie.substring(i,j)==arg) return this.getCookieVal (j);
    			i = document.cookie.indexOf(" ",i)+1;
    			if (i==0) break;
    		}
    		return null;
        },
    getCookieVal:function(offset){
    	 var endstr=document.cookie.indexOf (";",offset);
    	 if (endstr==-1) endstr=document.cookie.length;
    	 return unescape(document.cookie.substring(offset, endstr));
       },
    deleteCookie:function(name) {
    		var exp=new Date();
    		exp.setTime (exp.getTime()-1);
    		var cval=this.getCookie (name);
    		document.cookie=name+"="+cval+";expires="+exp.toGMTString();
    	}
}

1、导入 js
2、form的 onSubmit 指如果提交了就删除该 cookie, 而 DeleteCookie 也是自定义的一个函数。
3、textarea 里的 onkeyup 是指当按键时访问 AutoSave, 用以存储新写入的文字。而 onselect 和 onclick 用以新访问时确定导入自动保存的文字。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值