使用sessionStorage和localStorage不能直接存储json数据,需要转为字符串存储,也不支持过期时间的限制,比较不方便,现封装了一下sessionStorage和localStorage,放出来方便大家使用:

JSONStorage

changePartition(partitionName);分区存储,避免key冲突,可不切换分区
put(key,data,timeout);timeout不设置,就与sessionStorage和localStorage的过期策略一致
get(key);获取数据内容,JSON还原日期数据好像有问题,有需要可以自己改一下

var st = new JSONStorage(sessionStorage);
st.changePartition("test");
var applydata = {
	applyid : "1234",
	amount : 1234
};
st.put("1",applydata ,12);
st.remove("1");
(function(global, fact[......]

阅读全文

最近写了一个倒计时的控件,共享出来方便使用
用法:var stopwatch = new Stopwatch(“倒计时间/秒”,”倒计时完成时的回调函数”,”每个计时事件回调”,”计时步长/秒”)
stopwatch.start();//开始/继续计时
stopwatch.pause();//暂时计时
stopwatch.restart();//重新开始计时
stopwatch.stop();//停止计时

(function(global, factory) {
	// 兼容requirejs和普通引入模式
	if (typeof module === "object" && typeof module.exports === "object") {
		module.exports = global.document ? factory(global, true) : function(w) {
			if (!w.document) {
				throw new Error("requires a window with a document[......]

阅读全文

Validate.js

工作方式:

读取输入框的属性,校验输入框的值如:

<input class=”weui-input” type=”tel” name=”idcard” id=”inputIdcard” maxlength=”18″

pattern=”^\d{15}|^\d{17}[0-9Xx]$” data-pattern-msg=”请输入正确的身份证号

data-inputing-pattern=”^\d{0,15}$|^\d{0,17}[0-9Xx]$” data-inputing-msg=”请输入正确的身份证

required=”required” data-required-msg=”请输入身份证号

>

ps.对于required和pattern,html5默认实现了一套规则,需要在表单上禁用:

<form id=”calcForm” novalidate></form>

处理规则:

pattern:提交表单时的正则验证

data-pattern-msg:不匹配规则时的提[……]

阅读全文

有时候会遇到需求,在页面开着的时候session不让超时,只需要定时发送一个请求即可

具体的实现方式有很多,例:

  1. .使用HTML元信息头实现刷新,HTML提供了一种要求浏览器定时刷新页面的方式,也就是在HTMLhead标记内加入<meta http-equiv=”refresh” content=”60″>,这样浏览器就会每分钟刷新本页面了。
  2. 由于浏览器页面刷新会影响用户体验,可以放置一个隐藏的iframe方式来保持心跳。
  3. 使用javascript配合ajax定期提交心跳包,保持session.

[……]

阅读全文

  • 对于string,number等基础类型,==和===是有区别的
    • 不同类型间比较,==之比较”转化成同一类型后的值”看”值”是否相等,===如果类型不同,其结果就是不等
    • 同类型比较,直接进行”值”比较,两者结果一样
  • 对于Array,Object等高级类型,==和===是没有区别的

    进行”指针地址”比较

  • 基础类型与高级类型,==和===是有区别的
    • 对于==,将高级转化为基础类型,进行”值”比较
    • 因为类型不同,===结果为false

[……]

阅读全文

对于小括号无论是菜鸟还是高手一定都不会陌生,可以说它几乎是随处可见,虽然熟悉但并非真正的理解,由此可能会产生很多莫名其妙的错误,下面就通过代码实例详细介绍一下小括号的用法。

  1. 作为分组运算符:

    分组运算符应该是再熟悉不过了,因为在小学数学中就有应用,例如:

    var a=(1+2)*4;
    console.log(a);

    以上代码的输出值是12,因为分组运算符可以改变运算符的优先级,否则的话输出值是9

    扩展说明:

    1.很多教程说它是一个强制运算符,其实在ECMAScript中,根本就没有强制运算符这么一个概念,它就是普通分组运算符。

    2.这也是为什么eval()函数将json格式字符串转换为对象需再嵌套一个小括号的原因,可以参阅使用eval()json字符串转换为对象要多加一个小括号一章节。

  2. 函数声明和函数调用参数列表:

    在声明函数或者调动函数的时候,如果有参数,那么就会将参数放在小括号之中,代码如下:

    function func(a,b){
     //代码
    }

    调用

    func(1,2);
  3. 与特定关键字形成特[……]

    阅读全文

JSRender写标签时有时对象太复杂,嵌套层数又太深,很容易弄混内部的变量范围。本文实现一个$.views.helpers函数方便调试查看作用域变量的具体结构。
  • 1.实现一个debug函数
$.views.helpers({
 "debug" : function() {
  var info = "debug helper";
 }
});
  • 2.在info处加上断点
  • 3.在需要的地方使用    {{:~debug(someobj)}}155138_9iCM_780719

[……]

阅读全文