用jQuery和sessionStorage来实现表单的草稿保存功能

在网站的日常使用中,草稿保存是一个比较常见的功能,当用户在编辑表单时,可能需要跳到其他页面填写其他信息,也有可能发生一些其他的意外情况导致页面的资料丢失,使用jQuery和sessionStorage就可以实现简单的草稿保存功能。

在如何添加表单草稿保存功能时,有两个关键问题需要考虑,一是使用什么技术来实现草稿保存,二是草稿保存与实际存入数据库的时间点的逻辑关系。

sessionStorage可以帮助我们做到草稿保存的功能,在jQuery中有这样一个事件:blur(),该事件为失去焦点,即当我们点击了其他的页面标签时,就会触发这个事件。所以原理就是使用jQuery捕获blur事件,然后存入sessionStorage,当跳转回当前页面时,再将sessionStorage中存储的内容放回到对应的输入框中。

基础代码如下:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

<!-- 第一个form表单,这个form表单中的input会使用sessionStorage进行草稿保存 -->
<form action="server.php" method="post">
	<input type="text" id="input" name="msg" />
	<input type="submit" name="submit" id="submit">	
</form>

<!-- 第二个form表单,这个form表单中的input不会使用sessionStorage进行草稿保存 -->
<form method="post">
	<input type="text" id="input2" name="msg2" />
	<input type="submit" name="submit" id="submit2">	
</form>	

<a href="second.php">下一页</a>

<script>
	//通过blur事件触发sessionStorage
    $('#input').blur(function(){
        var val=$('#input').val();
        sessionStorage.setItem('msg',val);
    });

    //测试sessionStorage存储是否成功
    var test = sessionStorage.getItem('msg');
    console.log(test);

    //当点击提交按钮时,将sessionStorage中的信息移除
    $("#submit").click(function(){
    	sessionStorage.removeItem('msg');
    });

    //当网页加载时,将sessionStorage中的内容加载到对应的输入框中
    $(document).ready(function(){
        var val1=sessionStorage.getItem('msg');
        $("#input").val(val1);
    });

</script>

server.php是一个php文件,用来检测数据是否正常被提交。

second.php是一个php文件,用来跳转回当前页面。

页面初始效果是这样的:

在两个输入框中分别填入test和test1,然后点击下一页的链接再跳转回当前页面,或者直接点击浏览器的刷新,可以看到第一个输入框的test仍然存在,而第二个输入框的test已经丢失。

此时可以打开控制台查看,可以看到test被存储在了sessionStorage中。

在当前页面,再点击第一个输入框后面的提交按钮,可以看到server.php得到了提交的数据。

点击上一页跳转回之前页面,可以看到第一个输入框不再有test,打开控制台也可以看到sessionStorage中存储的信息已经被移除了。

到这里,就已经实现了一个简单的但是比较完整地表单草稿保存功能。

和sessionStorage类似的还有localstorage,sessionStorage会随着浏览器关闭,session被销毁而被清楚;但是localSorage会永久保存在本地。

使用sessionStorage也有一定的缺点,低版本的浏览器是不支持sessionStorage的,当然目前主流的浏览器绝大部分都是支持sessionStorage的;另一个缺点是当数据量很大时,存取速度会受到影响。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值