JS(jQuery)写缓存之:sessionStorage的运用:

结果就是讲存储的DOM对象value传到后台PHP,进行foreach(){} 解析JSON成二维数组

示例页面:http://www.xxxx.com/index.php?ctl=project&act=add_content&id=63

图片:

上1和下2

/*我的自述 我的项目 为何众筹 + 自定义章节 */

/*我的自述     我的项目     为何众筹   + 自定义章节 */
$(function(){
$('ul#tab li').bind("mousedown",function(){
/*点击叠加样式*/
$(this).addClass('active').siblings().removeClass('active');
});
js_session_mouseup();
//点击this自定义章节,siblings()上下排序、删除div自动隐藏
click_custom_hide(); $("ul#tab li").bind("mousedown",function(){
var index3 = $(this).index();
if(index3 >= 3){
$(this).addClass("active").siblings().removeClass("active"); //加样式
$("#kw").removeAttr("readonly");
// //给#kw初始化赋值
// var val = $(this).text();
// //alert(val+"id=63");
// $("#kw").val(val);
//动态给<a>赋值
$("#kw").bind("keyup",function(){
var kw = $("#kw").val();
$("li[class='active']").find("a").text(kw);
});
}else if(index3 <=2 && index3 >=0){
$("#kw").attr("readonly",true);
}
}); var i=0;
$('#addTable').bind('mouseup',function(){
++i;
//alert(i);
var count = $('ul#tab li').length;
//alert(count);
//所有章节最多只允许存在5个,通过i判断 xzz0505
if(count >= 5){
$.showErr("抱歉,自定义章节最多只允许添加2个");
return false;
}
$("#tab").append("<li><a>自定义章节</a><div class='changeIndex'> <div class='transform up'> <span class='icon icon-kaistart-arrows-left'></span> </div> <div class='transform down'> <span class='icon icon-kaistart-arrows-left'></span> </div> </div> <span class='icon icon-kaistart-close'></span></li>"); $("ul#tab li").bind("mousedown",function(){
var index2 = $(this).index();
if(index2 >= 3){
$(this).addClass("active").siblings().removeClass("active"); //加样式
$("#kw").removeAttr("readonly");
// //给#kw初始化赋值
// var val = $(this).text();
// //alert(val+"id=63");
// $("#kw").val(val);
//动态给<a>赋值
$("#kw").bind("keyup",function(){
var kw = $("#kw").val();
$("li[class='active']").find("a").text(kw);
});
}else if(index2 <=2 && index2 >=0){
$("#kw").attr("readonly",true);
}
});
js_session_mouseup();
//点击this自定义章节,siblings()上下排序、删除div自动隐藏
click_custom_hide(); /*点击‘x’自定义章节删除*/
$(document).on('click', '.icon-kaistart-close', function() {
if(!window.sessionStorage){
return false;
}else{
var del_key = $.trim($(this).parent().find("a").text())+$("input[name='id']").val().toString();
var storage = window.sessionStorage;
storage.removeItem("del_key");
}
$(this).parent().remove();
//--i;
});
});
}); function js_session_mouseup(){
if(!window.sessionStorage){
return false;
}else{
$("ul#tab li").bind("mouseup",function(){
var index = $(this).index();
var my_block = $.trim($("input[name='my_block']").val());
var my_title = $.trim($("input[name='my_title']").val());
var descript = $(".editable").html();
var textarea = $.trim($("textarea[name='descript']").val());
//表单章节名+项目id
var block_key = my_block+$("input[name='id']").val().toString();
//点击的左侧章节名+项目id
var click_key = $.trim($(this).find("a").text())+$("input[name='id']").val().toString();
//将<form>表单存储为json对象,以‘章节名+项目id’为key,三个字段值为value;
var json_data = {"my_block":my_block,"my_title":my_title,"descript":descript,"textarea":textarea}; //赋值。sessionStorage相同key自动替换;key不同:添加元素
//这里需要处理异常,sessionStorage最大限额为5M,所以最好做一个判断
try{
sessionStorage.setItem(block_key,JSON.stringify(json_data));
}catch(Exception){
console.log('超出本地存储限额!');
alert("您填写的内容已超过本地存储限额5M");
return false;
}
//取值,将sessionStorage数据写入隐藏域数组arr
var storage = window.sessionStorage;
var arr=new Array();
/* 将sessionStorage数据全部写入隐藏域,以数组的形式放在<form>表单里面 */
for(var j=0,len=storage.length;j<len;j++){
var key1 = storage.key(j);
arr.push(sessionStorage.getItem(key1));
}
// console.log(arr); //数组对象
var str_arr = JSON.stringify(arr); //数组转json对象
var str = JSON.stringify(str_arr); //json对象转json字符串
// console.log("json字符串:"+str);
$("input[name='sessionStorage']").attr("value",str_arr);
var v = $("input[name='sessionStorage']").attr("value");
// console.log("sessionStorage隐藏域值:"+v); //json字符串 for(var i=0,len = storage.length;i<len;i++){
var key = storage.key(i);
/*遍历到了点击的click_key,取值*/
if(key == click_key){
/*console.log("章节名相同数据展示");*/
var back_data = JSON.parse(sessionStorage.getItem(click_key));
$("input[name='my_block']").val(back_data.my_block);
$("input[name='my_title']").val(back_data.my_title);
$("textarea[name='descript']").val(back_data.textarea);
$(".editable").html(back_data.descript);
return false;
}
} /*console.log("章节名不同为空");*/
$("input[name='my_block']").val($.trim($(this).find("a").text()));
$("input[name='my_title']").val("");
$("textarea[name='descript']").val("");
$(".editable").html("");
return false;
});
}
} //点击this自定义章节,siblings()上下排序、删除div自动隐藏
function click_custom_hide(){
$("ul#tab li").bind("click",function(){
$(this).find("div").show();
$(this).find("span").show();
$(this).siblings().find("div").hide();
$(this).siblings().find("span").hide();
});
}

jQuery写缓存之:sessionStorage的运用,配合PHP将不同tab页的数据写入后台的更多相关文章

  1. 为jQuery写插件

    很多场合,我们都会调用jQuery的插件去完成某个功能,比如slider. 如下图,做一个div,通过“$( "#slider" ).slider();”的方式直接将div变成sl ...

  2. 用jquery写循环播放div的相关笔记 珍贵的总结 -1

    用jquery写循环播放div line-height应用的元素的 层次? line-heig字ht, 叫行高, 仅仅是指 文/文本, 而不管图片. line-height是容器中 文本行 与 文本行 ...

  3. 从jQuery的缓存到事件监听

    不知道大家有没有发现,用jQuery选择器"选择"之后的DOM上会添加jQuery*********属性. <DIV id=d1 jQuery1294122065250=&q ...

  4. Jquery IE 缓存问题

    jQuery IE缓存问题 解决方法: 1.在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数 在javascript发送的URL后加上t=Math.random() 例如这样:URL+”& ...

  5. 基于JQUERY写的 LISTBOX 选择器

    本文来之于:http://blog.csdn.net/jetsteven/article/details/5104380# 1.经常用到如下图的选择器,而且要支持排序的,所以萌生用JQUERY写一个. ...

  6. 用jQuery写了一个模态框插件

    用jQuery写了一个模态框插件 大家觉得下面的框框好看么, 水印可以去掉(这个任务交给你们了(- o -)~zZ); "info"框 $("div").con ...

  7. 用jQuery写的最简单的表单验证

    近几天完成了关于我们项目的最简单的表单验证,是用jQuery写的,由于之前也一直没学过jQuery,所以自己也是一直处于边摸索边学习的阶段,经过这一段时间的学习,通过查资料啥的,也发现了学习jQuer ...

  8. 运用jQuery写的验证表单

    //运用jQuery写的验证表单 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  9. 用jQuery写的轮播图

    效果图: GitHub地址:https://github.com/123456abcdefg/Javascript 大家可以下载源码查看. 与前一篇写的轮播图实现的效果一致,这个是用jQuery写的, ...

随机推荐

  1. cocos2d-x动画加速与减速

    动画是游戏的必定要素之中的一个,在整个游戏过程中,又有着加速.减速动画的需求.以塔防为样例,布塔的时候希望可以将游戏减速,布好塔后,则希望能将游戏加速:当某个怪被冰冻后,移动速度减缓,而其它怪的移动速 ...

  2. restful处理

    重写/覆盖   HTTP 方法 一些HTTP客户端仅能处理简单的的GET和POST请求,为照顾这些功能有限的客户端,API需要一种方式来重写HTTP方法. 尽管没有一些硬性标准来做这事,但流行的惯例是 ...

  3. 成为Java高手的25个学习目标

    本文将告诉你学习Java需要达到的25个目标,希望能够对你的学习及找工作有所帮助.对比一下自己,你已经掌握了这25条中的多少 条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(G ...

  4. PHP语言基础之MySql 05 By ACReaper

    PHP的基本语法学完后,我们马上学下PHP如何和MySql进行交互.PHP和MySql进行交互的API可以分为两类,一类是面向过程的,一类是面向对象的,面向对象的我们等复习完面向对象再介绍,现在先介绍 ...

  5. Interpreter Expression 解释器模式 MD

    解释器模式 简介 Interpreter模式也叫解释器模式,是行为模式之一,它是一种特殊的设计模式,它建立一个解释器,对于特定的计算机程序设计语言,用来解释预先定义的文法. 应用环境: 如果一种特定类 ...

  6. 【java】jvm查看当前虚拟机堆大小限制

    #############################################################jinfo -flag MaxHeapSize 6461#linux: jav ...

  7. Linux command 系统快捷键

    群里有人问"问个问题,Linux 命令行有没有快捷键一下从行末会到行头?经常敲了很多命令发现忘加 sudo 了,然后把命令删了重新敲一遍". 自己还真不知道怎么操作,只知道历史命令 ...

  8. 取消Eclipse SVN的自动链接方式

    1. 选中指定的项目名(有文件夹样子的那个) 2. 右键,在在弹出菜单选择 Team 3. 然后再点击, Disconnect 即可.

  9. 【nodejs】使用put方式向后端提交数据

    页面代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Ty ...

  10. android模拟器使用gps定位

    在模拟器上获取GPS信息时,使用Location loc = LocationManager.getLastKnownLocation("gps");来获取location信息,但 ...