-1

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

4

3 回答 3

0

您可以简单地在按钮单击事件上设置一个计时器,该事件最初禁用按钮,然后在一定时间后重新启用它。

$('.myButton').click(function() {
    ...
    $(this).attr('disabled','disabled');
    setTimeout(function() {
        $(this).removeAttr('disabled');
    }, 2000);
})
于 2013-02-13T20:51:32.727 回答
0

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

$('#myButton').click(function() {
    $(this).attr('disabled', 'disabled');
    setTimeout(function() {
      $('#myButton').removeAttr('disabled');
    }, 1000);
}
于 2013-02-13T20:53:17.060 回答
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;
    });
}
于 2013-02-13T21:01:20.397 回答