zoukankan      html  css  js  c++  java
  • javascript 事件流的应用之 addEventListener

    原始需求:防止按钮短时间内高频率触发点击事件,由于重复提交导致的业务异常。

    图:

    demo:

    <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <style media="screen">
          .forbidden button{
            cursor: not-allowed;
          }
        </style>
      </head>
      <body>
        <h5>3秒内的多次点击只生效一次(基于事件拦截)</h5>
        <div class="button-group">
          <button class="link-button" onclick="randomNum()">random</button>
          随机数:<span id="random_num"></span>
        </div>
      </body>
      <script type="text/javascript">
      /* 初始化禁用绑定 */
      document.querySelector('.link-button').addEventListener('click',forbiddenButton,true);
    
      function randomNum(){
        document.querySelector('#random_num').innerHTML = Math.random();
      }
    
      var forbiddenTimer;
      function forbiddenButton(){
        var pNode = this.parentNode;
        pNode.classList.add('forbidden');
        pNode.addEventListener('click',function(e){
          if(Array.from(this.classList).includes('forbidden')) e.stopPropagation();
          _clearTimer();
        },true);
        _clearTimer();
    
        function _clearTimer(){/* 3秒之后取消禁用状态 */
          if(forbiddenTimer) clearTimeout(forbiddenTimer);
          forbiddenTimer = setTimeout(function(){
            pNode.classList.remove('forbidden');
          },3000);
        }
      }
      </script>
    </html>

    addEventListener事件拦截参考:https://www.cnblogs.com/Andyudd/p/5583563.html

  • 相关阅读:
    js使用笔记
    rabbit-mq使用官方文档
    tomcat Enabling JMX Remote
    Venom的简单使用
    Random模块
    时间模块
    shulti模块简述
    Python的os模块
    Python压缩及解压文件
    Kali的内网穿透
  • 原文地址:https://www.cnblogs.com/xtreme/p/9295891.html
Copyright © 2011-2022 走看看