禁用多次点击JavaScript

我试图禁用元素的多次点击或在每次点击之间设置延迟以防止内容超载

我想做那样的事!

var clicked = false; if(!clicked) { clicked = true; // do all my staff right here !! setTimeout(function(){ clicked = false; }, 3000); } 

但它不起作用? 任何人都可以得到我想做的事情? 谢谢

禁用使用setTimeout单击按钮30秒。

  $("#btnTest").click(function() { $(this).attr("disabled", true); setTimeout(function() { $('#btnTest').removeAttr("disabled"); }, 30000); }); 
   

你可以禁用元素

 $(element).prop('disabled', true); 

点击后

我在初始点击函数中使用init clicked变量,否则如果条件在每次单击时始终为true。

不使用jQuery这段代码有效:

 var clicked = false; function clickEvent() { if(!clicked) { clicked = true; console.log('clicked!!'); setTimeout(function(){ clicked = false; }, 3000); } } 
  

这不起作用,因为单击的变量在函数范围内。 你需要关闭。 如果您想通过变量执行此操作,下面将有所帮助。 您也可以设置html5数据属性来处理相同的内容。

在这里工作JSFiddle

 window.onload = function() { initListener(); }; var initListener = function() { var clicked = false; document.getElementById('btn').addEventListener('click', function(event) { if (!clicked) { clicked = true; alert('Hi'); setTimeout(function() { clicked = false; }, 3000); } } ); }