js框架防止重复点击代码

系统中出现了一些问题,仔细查询日志后发现在短时间内用户切同一个单好几次,仔细想想就知道应该是用户连续点击的缘故。当然跟我后台判断的疏漏有关系,但是我认为前台也应该做一些限制措施比较好。

基本的思路是声明一个flag变量,然后点击后变成true,按钮动作完了再变回false。不过我的方法很多,而且很多按钮都是用模板生成的,需要动态生成flag。

	function noRepeat(key){
		if(!!window[key]){
			if(window[key]>4){//重复一定次数发出提醒
                window[key] = 1;
				top.layer.msg("正在处理中,请不要重复点击",{icon:0});
			}
			window[key] ++;
			return true;
		}
		if(typeof(window[key] == "undefined")){//第一次点击声明flag
			window[key] = 0;
		}
		window[key]++;
		return false;
	}
    function button1(){
		if(noRepeat(arguments.callee.name+"Flag")){//方法名+Flag组成动态flag名
			return;
		};
        $.ajax({
			type: "post",
			dataType: "json",
			url: url,
			data: {},
			success: function (result) {
				window[arguments.callee.name+"Flag"] = 0;
			}
		});
    }

arguments.callee.name就是方法名,一般来说方法名是不会重复的,当然也可以换成其他不会重复的关键字。

js可以使用map[key]的方式声明变量真的十分灵活,特别是写框架或者模板的时候,有的页面不会声明全局变量,在模板中使用window[key]就避免了因为没有声明变量而报错了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章