js 防抖动、重复提交、频繁点击
- 防止重复点击
-
var isclick= true;//加一个点击开关
-
function click(){
-
if(isclick){
-
isclick = false;
-
//下面添加需要执行的事件
-
...
-
}
-
}
- 防止重复点击(设置定时器)
-
var isclick= true;
-
function click(){
-
if(isclick){
-
isclick= false;
-
//下面添加需要执行的事件
-
...
-
-
//定时器
-
setTimeout(function(){
-
isclick = true;
-
}, 500);
-
}
-
}
- 防抖动
-
/*防抖函数,通过推迟每次事件执行的时间来减少不必要的查询
-
*handler:要执行的方法
-
*delay:每次事件执行的推迟时间(毫秒)
-
*/
-
-
function debounce(handler, delay) {
-
var timer;
-
-
return function () {
-
var self = this, arg = arguments;
-
-
clearTimeout(timer);
-
-
timer = setTimeout(function () {
-
handler.apply(self, arg)
-
}, delay)
-
}
-
}
-
-
function showAll(e) {
-
console.log(e.target)
-
console.log('执行查询操作', new Date().getTime())
-
}
-
-
var searchInput = document.getElementById('search');
-
searchInput.addEventListener('keyup', debounce(showAll, 500), false)
- 节流函数
-
/*节流函数,通过控制每次事件执行的时间间隔控制短时间多次执行方法
-
*handler:要执行的方法
-
*wait:每次点击事件执行的时间间隔(毫秒)
-
*/
-
-
function throttle(handler, wait) {
-
-
var lastTime = 0;
-
-
return function () {
-
-
var nowTime = new Date().getTime();
-
-
if (nowTime - lastTime > wait) {
-
handler.apply(this, arguments);
-
lastTime = nowTime;
-
}
-
-
}
-
}
-
-
// 提交方法
-
function ajaxForm(e) {
-
console.log(e.target)
-
console.log('执行提交操作', new Date().getTime())
-
}
-
-
var subBtn = document.getElementById('submit');
-
subBtn.addEventListener('click', throttle(ajaxForm, 1000), false)
- 表单防重复提交
-
-
form action="" onsubmit="return dosubmit()" method="post">
-
<input1>
-
<input2>
-
...
-
<input type="submit" value="提交" id="submit">
-
</form>
-
-
var isCommitted = false;//表单是否已经提交标识,默认为false
-
function dosubmit(){
-
if(isCommitted==false){
-
isCommitted = true;//提交表单后,将表单是否已经提交标识设置为true
-
return true;//返回true让表单正常提交
-
}else{
-
return false;//返回false那么表单将不提交
-
}
-
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2020-05-28 junit5学习资料汇总