5

関数の呼び出し時にボタンのスパムを防ぐにはどうすればよいですか?? ユーザーがボタンで1秒ごとに関数を呼び出すことができるように。

それを行う方法はありますか?? 原因 setTimeout を試しましたが、動作しませんでしたが、Jqueryを使用してまだスパムを送信していました。

ここに私のコードがあります:

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



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

4 に答える 4

6

次の方法で、関数をロック (関数ロジックの実行を防止) できます。

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');
}
于 2013-04-12T05:27:38.510 に答える
1

Web ページでの関数の呼び出しを防ぐことはできません。ハッカーがあなたのページのコードをいじりたければ、そうすることができます。

特定のクライアントによる ajax 関数の頻繁な呼び出しをブロックする場合は、クライアント ログイン、レート制限などの手法を使用してサーバー上でブロックする必要があります。


通常のマウス クリックで特定の時間内にボタンが 2 回以上押されないようにする場合は、非常に簡単です。ボタンが押されたときにボタンを無効にし、しばらくしてから再度有効にするだけです。

于 2013-04-12T05:27:34.617 に答える
0

私が正しければ、JQuery のデバウンス用のこの小さなプラグインはどうですか: http://benalman.com/projects/jquery-throttle-debounce-plugin/

于 2013-04-12T05:27:23.290 に答える