javascript 防止多次提交或执行(在规定时间段内只允许执行一次) 默认 3000ms

复制代码
"use strict"

class Func{
    
    constructor(){}
        //防止多次提交或执行(在规定时间段内只允许执行一次) 默认 3000ms
    isRun(id, isExit, time){
    //id : string 必须
    //isEnit : boolean 可选 如果为 true 则删除对应 id 的对象
    //time : number 可选 默认间隔时间 3000 秒
if(this.list === undefined){Func.prototype.list = {};} if(id === undefined || typeof(id) !== "string"){return "参数id未定义";} if(isExit === true){delete(this.list[id]); return "删除对象: "+id;} let o = this.list[id]; if(!o){this.list[id] = {time:time || 3000, nowTime:new Date().getTime()}; return true;} let t = new Date().getTime() - o.nowTime; if(t < o.time){return o.time - t;} o.nowTime = new Date().getTime(); return true; } }
复制代码

调用:

复制代码
 1 //绑定事件
 2     v.addEvent(v.get("loginBoxId"), "click", (e)=>{
 3         let id = e.target.id;
 4         
 5         if(id === "BackId"){//返回按钮
 6             history.back();
 7             
 8         }else if(id === "RegisterId"){//注册按钮
 9             location.href = "../register/view.php";
10             
11         }else if(id === "LoginId"){//登录按钮
12             if(new Func().isRun("login0") !== true){console.log('停止'); return;}//防止连续提交
13             console.log('执行');
14             let el_err = v.get("errorId"), el_e = v.get("EmailId"), el_p = v.get("PasswordId");
15             if(!el_e.value || !el_p.value){el_err.innerHTML = "Please fill in email address and password!"; return;}
16             //把 用填写的邮箱地址和密码发送给login.php进行验证返回true 或false
17             new Ajax({
18                 url:"./login.php", 
19                 data:"data="+JSON.stringify([el_e.value, el_p.value]), 
20                 success:(data)=>{
21                     if(JSON.parse(data) === true){
22                         location.href = "../index.php";
23                         return;
24                     }
25                     el_err.innerHTML = "Illegal email or password!";
26                 }
27             });
28         }
29     });
View Code
复制代码

展示:

posted @   鸡儿er  阅读(980)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示