2013-04-12 48 views
2

如何防止垃圾按钮拨打功能?就像用户每1秒钟只能在按钮上调用该功能一样。防止垃圾按钮拨打功能

有没有办法呢?因为我试过setTimeout但它没有工作,它仍然垃圾邮件 顺便说一句,我用Jquery。

这里是我的代码:

<button class="buttonUpdateStatus" id="idbuttonUpdateStatus" onclick="alertStatus()">Post Status</button> 



function alertStatus() { 
     $('#doneStatus').hide(); 
     $('#loadingStatus').show(); 
    } 

回答

3

您可以锁定(防止执行功能逻辑)以下列方式功能:

var locked = false; 
function alertStatus() { 
    if (!locked) { 
     locked = true; 
     setTimeout(unlock, 1000); 
     $('#doneStatus').hide(); 
     $('#loadingStatus').show(); 
    } 
} 

function unlock() { 
    locked = false; 
} 

您还可以禁用按键,使得用户不能点击它在所有:

function alertStatus() { 
    $('#idbuttonUpdateStatus').attr('disabled', 'disabled'); 
    setTimeout(enable, 1000); 
    $('#doneStatus').hide(); 
    $('#loadingStatus').show(); 
} 

function enable() { 
    $('#idbuttonUpdateStatus').removeAttr('disabled'); 
} 
+0

这是一个非常好的方法。我实际上结合了这两种方法,以防万一有人通过萤火虫或其他方式重新启用了禁用的按钮(虽然我知道它不太可能)。谢谢!!! –

1

您不能防止一个函数的调用在您的网页。如果黑客想要混淆页面中的代码,他们可以。

如果你想通过一个特定的客户端来阻止一个Ajax功能的频繁调用的,那么你将不得不做,使用像客户端登录技术的服务器,速率限制等上......


如果您想在给定的时间段内不止一次按下按钮来正常点击鼠标,那很简单。您只需在按下按钮时禁用该按钮,并且稍后再次启用该按钮。