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]就避免了因爲沒有聲明變量而報錯了。

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