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

  • 相关阅读:
    Linux systemd & init.d
    windows 气泡提示
    C++17新特性
    Lua & C++
    C++智能指针原理
    C++ Memory Order
    析命令提示符的原理
    设置与获取系统代理信息
    命令查看系统信息
    Linux shell脚本
  • 原文地址:https://www.cnblogs.com/xtreme/p/9295891.html
Copyright © 2011-2022 走看看