前端js点击事件处理多次频繁点击问题

3 篇文章 0 订阅
3 篇文章 0 订阅

在开发中有时候我们有一个点击请求事件,如果操作者一直快速点击就会一直请求,造成资源浪费为此我们一般要进行处理防止用户频繁点击

一般处理频繁点击有:

1.显示隐藏

2.通过时间间隔进行判断

3.使用节流处理

此次使用第三种如果想了解前两种可进行搜索查询

代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <link rel="stylesheet" href="">
</head>
<body>
    <button class="btn1" type="button">点击</button>
    <script>
        window.onload = function() {
            var isFrist = true // 是不是第一次点击
            function delBtn() {
                console.log('用户处理事件')
            }
            var throttle = function(method, context){
              clearTimeout(method.tId);
              method.tId = setTimeout(function(){
                method.call(context);
              }, 300);
            }
            let btnDom = document.querySelector('.btn1')
            btnDom.οnclick=function() {
                if (isFrist) {
                    // 如果是第一次点击直接执行相关请求
                    delBtn()
                    isFrist = false
                }else {
                    // 如果不是第一次点击进行节流
                    throttle(delBtn)
                }
                
            }
        }
    </script>
</body>
</html>

节流的主要方法就是throttle这个函数每隔300毫秒执行一次delBtn这个方法,这样我们就处理了用户频繁点击的问题

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
前端可以通过以下几种方式防止用户重复提交: 1. 禁用提交按钮:在表单被提交后,立即禁用提交按钮,防止用户多次点提交按钮。可以通过以下代码实现: ```javascript document.querySelector('form').addEventListener('submit', function(event) { event.preventDefault(); document.querySelector('button[type="submit"]').setAttribute('disabled', true); // ... }); ``` 2. 显示加载动画:在表单被提交后,显示一个加载动画来提示用户正在处理请求,防止用户多次点提交按钮。可以通过以下代码实现: ```javascript document.querySelector('form').addEventListener('submit', function(event) { event.preventDefault(); document.querySelector('.loading').style.display = 'block'; // ... }); ``` 3. 防抖函数:在用户频繁提交按钮时,使用防抖函数延迟请求的发送。可以通过以下代码实现: ```javascript function debounce(fn, delay) { let timer; return function() { clearTimeout(timer); timer = setTimeout(() => { fn.apply(this, arguments); }, delay); } } const submitForm = debounce(function() { document.querySelector('form').submit(); }, 1000); document.querySelector('button[type="submit"]').addEventListener('click', function(event) { event.preventDefault(); submitForm(); }); ``` 以上是前端防止用户重复提交的一些方法,但这些方法只是针对前端处理,为了保证数据的安全和正确性,后端也需要进行相应的处理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值