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;
}
}
调用:
//绑定事件
v.addEvent(v.get("loginBoxId"), "click", (e)=>{
let id = e.target.id; if(id === "BackId"){//返回按钮
history.back(); }else if(id === "RegisterId"){//注册按钮
location.href = "../register/view.php"; }else if(id === "LoginId"){//登录按钮
if(new Func().isRun("login0") !== true){console.log('停止'); return;}//防止连续提交
console.log('执行');
let el_err = v.get("errorId"), el_e = v.get("EmailId"), el_p = v.get("PasswordId");
if(!el_e.value || !el_p.value){el_err.innerHTML = "Please fill in email address and password!"; return;}
//把 用填写的邮箱地址和密码发送给login.php进行验证返回true 或false
new Ajax({
url:"./login.php",
data:"data="+JSON.stringify([el_e.value, el_p.value]),
success:(data)=>{
if(JSON.parse(data) === true){
location.href = "../index.php";
return;
}
el_err.innerHTML = "Illegal email or password!";
}
});
}
});
展示:

javascript 防止多次提交或执行(在规定时间段内只允许执行一次) 默认 3000ms的更多相关文章
- JavaScript form表单提交与验证
原网址:https://blog.csdn.net/vipwxs/article/details/79119701 一.form对象的属性: name:获取表单的名称,该name一般给JS使用 met ...
- 【JavaScript】Html form 提交表单方式
源:http://blog.csdn.net/wang02011/article/details/6299517 1.input[type='submit'] 2.input[type='image' ...
- 项目总结15:JavaScript模拟表单提交(实现window.location.href-POST提交数据效果)
JavaScript模拟表单提交(实现window.location.href-POST提交数据效果) 前沿 1-在具体项目开发中,用window.location.href方法下载文件,因windo ...
- Javascript阻止表单提交
Javascript阻止表单提交 Html 1.<form name="loginForm" action="login.aspx" method=&qu ...
- javascript实现表单提交加密
javascript实现表单提交加密 通常表单的提交有两种方式,一是直接通过html的form提交,代码如下: <form action="" method="&q ...
- 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码
2013-9-15 1. CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...
- 高程(4):执行环境、作用域、上下文执行过程、垃圾收集、try...catch...
高程三 4.2.4.3 一.执行环境 1.全局执行环境是最外层的执行环境. 2.每个函数都有自己的执行环境,执行函数时,函数环境就会被推入一个当前环境栈中,执行完毕,栈将其环境弹出,把控制器返回给之前 ...
- update语句的执行步骤及commit语句的执行顺序
update语句的执行步骤和其他DML语句的执行步骤是一样的包含insert .delete语句等,执行步骤如下: 一.如果数据和回滚数据不在数据库高速缓存区中,则oracle服务器进程将把他们从数据 ...
- JS流程控制语句 反反复复(while循环) 和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足。
反反复复(while循环) 和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足. while语句结构: while(判断条件) { 循环语句 } 使用w ...
随机推荐
- .Net Core使用分布式缓存Redis:Lua脚本
一.前言 运行环境window,redis版本3.2.1.此处暂不对Lua进行详细讲解,只从Redis的方面讲解. 二.Redis的Lua脚本 在Redis的2.6版本推出了脚本功能,允许开发者使用L ...
- 区间 dp
以一个经典题目引入到正题 : 有 n 堆石子 , 每两堆石子合并会花费一定的价值,所花费的价值即为 两堆石子上的价值和 , 问合并所有的石子后的最小花费 ? 思路分析 : 因为题干可以看成是对每个区间 ...
- 算法笔记codeup-Contest100000568
A #include <stdio.h> int main() { ; ; while(a) { sum=sum+a; a--; } printf("%d",sum); ...
- Redis 使用总结
1. 避免大key 危害: 数据热点问题,集群模式在slot分片均匀情况下,会出现数据和查询倾斜情况,部分有大key的Redis节点占用内存多,QPS高 慢查询问题,服务超时 网卡带宽压力,极端情况下 ...
- 【Java并发基础】死锁
前言 我们使用加锁机制来保证线程安全,但是如果过度地使用加锁,则可能会导致死锁.下面将介绍关于死锁的相关知识以及我们在编写程序时如何预防死锁. 什么是死锁 学习操作系统时,给出死锁的定义为两个或两个以 ...
- 客户端 jQuery 跨端口 调用 node 服务端
一句话 很顶用 response.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:8020'); 说 响应的头文件里设置 一个 h ...
- 基于Bootstrap和Knockout.js的ASP.NET MVC开发实战 关于 拦截器的 学习 部分
先贴一段: 下面贴代码: 上面这段代码呢,有几个点迷糊.可以找找看
- Windows Server 2016 Active Directory 图文搭建指南
1. 首先打开Manage --> Add Roles and Features 2. 点击Next 3. 不做修改,点击Next 4. 不做修改,点击Next 5. 选择Active Dire ...
- GitHub学习之路1
对于代码的管理以及维护上,GitHub不失为一个较为明智的选择.而对于GitHub的灵活应用也是相当重要的,以下记录为以防自己忘记. 1. 创建SSH Key ssh-keygen -t rsa –C ...
- sqli_labs学习笔记(一)Less-54~Less-65
续上,开门见山 暴库: http://43.247.91.228:84/Less-54/?id=-1' union select 1,2,database() --+ challenges 爆表: h ...