2013-04-12 3 views
2

Как предотвратить спам кнопки при вызове функции? так как пользователь может вызывать функцию только через 1 секунду на кнопке.Предотвращение спама кнопки для вызова функции

Есть ли способ сделать это ?? потому что я попробовал setTimeout, но он не работал, он все еще спам BTW я использовал 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

Это действительно хороший метод. Я фактически объединил оба этих метода на случай, если кто-то снова включил отключенные кнопки через firebug или т. Д. (Что работает), хотя я знаю, что это маловероятно. Благодаря!!! –

1

Вы не можете предотвратить вызов функции в вашем веб-странице , Если хакеры хотят испортить код на вашей странице, они могут.

Если вы хотите, чтобы заблокировать частое Призвание АЯКС функции от конкретного клиента, то вам придется сделать это на сервере с помощью таких методов, как регистрации клиента, ограничение скорости и т.д ...


Если вы хотите, чтобы обычный щелчок мыши не нажал кнопку более одного раза в течение заданного периода времени, это довольно просто. Вы просто отключите кнопку, когда она нажата, и снова включите ее через некоторое время.