限制消息发送逻辑

时间:2013-02-13 20:47:58

标签: php javascript jquery

我正在寻找一些关于如何正确限制每秒发送邮件的提示。我有一个ajax请求,它将数据发送到PHP文件,以便在用户按下按钮时进行处理。我想限制用户在一秒钟内按下提交按钮的次数到一定数量。这有效地允许每秒不超过3条消息。我不太确定如何完成这项工作,有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您只需在按钮点击事件上设置一个计时器,该事件最初禁用该按钮,然后在一定时间后重新启用它。

$('.myButton').click(function() {
    ...
    $(this).attr('disabled','disabled');
    setTimeout(function() {
        $(this).removeAttr('disabled');
    }, 2000);
})

答案 1 :(得分:0)

您可以在点击后停用按钮,然后在一段时间后使用setTimeout()重新启用它:

$('#myButton').click(function() {
    $(this).attr('disabled', 'disabled');
    setTimeout(function() {
      $('#myButton').removeAttr('disabled');
    }, 1000);
}

答案 2 :(得分:0)

  

我想限制用户在一秒钟内按下提交按钮的次数

这很容易,在请求处于活动状态时禁用它,并在经过一段时间后启用它。但是,您需要注意“单击按钮”与“发送到服务器的请求”不同,您还需要一个服务器端逻辑。

$('#theButton').click(function() {
    var button = this,
        ratelimit = true,
        ajaxrunning = true;
    button.disabled = true;
    setTimeout(function() {
        ratelimit = false;
        if (!ajaxrunning)
            button.disabled = false;
    }, 5000);
    $.ajax(…).always(function() {
        ajaxrunning = false;
        if (!timeout)
            button.disabled = false;
    });
}