当前位置:   article > 正文

前端防止重复提交

前端防止重复提交
防止连续点击提交按钮,重复往数据库插入相同记录,在前端发请求之前拦截。

新建一个js文件
clickThrottle.js
  1. /* 防止重复点击 */
  2. let clickTimer = 0
  3. function clickThrottle() {
  4. var interval = 3000;//3秒钟之内重复点击只算一次点击
  5. let now = +new Date(); // 获取当前时间的时间戳
  6. let timer = clickTimer; // 记录触发事件的事件戳
  7. if (now - timer < interval) {
  8. // 如果当前时间 - 触发事件时的事件 < interVal,那么不符合条件,直接return false,
  9. // 不让当前事件继续执行下去
  10. return false;
  11. } else {
  12. // 反之,记录符合条件触发了事件的时间戳,并 return true,使事件继续往下执行
  13. clickTimer = now;
  14. return true;
  15. }
  16. }

在需要的地方进行调用:

if(!clickThrottle()) return;

控制逻辑就是在3秒钟之内多次点击,只有一次有效。这里的时间根据实际情况进行调整即可。

----------------------------------------------------------分割线---------------------------------------------------------

下面记录另外一种实现方法:

 

在点击事件对应的js方法中获取到当前点击元素

在发送ajax请求前将点击的元素(按钮)置为不可用状态

在请求完成后,将点击元素(按钮)状态置为可用

完成代码示例

  1. function submitSupEditPage () {
  2. var _this = this;
  3. $.ajax({
  4. type: "post",
  5. url: url,
  6. cache: false,
  7. async: false,
  8. data: $("#WSFrom").serialize(),
  9. beforeSend:function(){
  10. $(_this).prop('disabled',true);
  11. },
  12. success: function (data) {
  13. //to do
  14. },
  15. complete:function(){
  16. $(_this).prop('disabled',false);
  17. }
  18. });
  19. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/234498
推荐阅读
相关标签
  

闽ICP备14008679号