2013-04-12 46 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功能的頻繁調用的,那麼你將不得不做,使用像客戶端登錄技術的服務器,速率限制等上......


如果您想在給定的時間段內不止一次按下按鈕來正常點擊鼠標,那很簡單。您只需在按下按鈕時禁用該按鈕,並且稍後再次啓用該按鈕。