限制表单提交的时间

时间:2012-11-21 14:50:04

标签: javascript jquery html

我有一个textarea:

      <form id='test'>
      <textarea class='test2'> </textarea> <input type='submit' value='send'/>
      </form>

我想知道是否有办法限制用户提交textarea的次数(例如,每分钟5次)。

编辑:    我想在客户端使用Javascript进行此操作。

编辑2:

这是聊天。我只是不希望人们能够在一小段时间内发布太多消息。因此,如果他们刷新页面以达到极限,这不是一个问题,他们需要花费足够长的时间......

4 个答案:

答案 0 :(得分:2)

您可以存储一些变量:

$(function () {
   var timesSubmitted = 0;
   var maxSubmits = 5;
   var intervalMilliseconds = 10000; // for testing   
   var interval;   
    $('input[type=submit]').click(function (event) {
        if (!interval) {
            interval = setTimeout(function () {
                interval = undefined;
                timesSubmitted = 0;
                $('div').append('TIMER RESET. Submit again.<br />')
            }, intervalMilliseconds);
        }
        timesSubmitted ++;
        if (timesSubmitted > maxSubmits) {
            $('div').append('NO GO YO!<br />')
        } else {
            $('div').append('valid<br />')   
        }
        event.preventDefault();        
    });        
});​

Example

答案 1 :(得分:1)

就像他们说的那样,用javascript做这件事并不专业,也不安全。更好的服务器端,但在这里你去:

<script type="text/javascript"> 
var flag = false;
function checkTimer(){
    if (flag){
        flag=false;
        return true;
    }
    alert("Don't flood man!");
    return false;
}

//12 seconds, max 5 times per minute
setTimeout(function(){flag=true;},12000);
</script>

在表格上:

<form id='test' onSubmit="return checkTimer()">

答案 2 :(得分:1)

我在jsFiddle上制作了这个快速的小样本。您可能需要在某些ajax中对此进行扭曲,以便您可以在不重新加载变量的情况下提交表单以保留您的信息。

如果您正在寻找AJAX版本,它会看起来像

// Setup variable for easy tracking!!!
var timesSubmitted = 0, timeCounter = 60 * 1000, Timer = null;

// Call function to submit form
function submitForm() {
  // Check if user has submitted form more than 5 times
  if (timesSubmitted < 5) {
      // Call ajax to submit form. jQuery Ajax: http://api.jquery.com/jQuery.ajax/
      $.ajax({
          type: "POST",
          url: 'ajaxpage.html',
          data: { test2: $('#test textarea').val() },
          success: function(data) { // if form is submitted successfully
              // If timer has yet to be started... Start it! 
              if (Timer === null) {
                  Timer = setTimeout(
                      function() {  
                          // Setup alert so user knows they can continue to submit form
                          if (timesSubmitted > 0) { alert('Submissions Reset'); }
                          timesSubmitted = 0; 
                      }, 
                  timeCounter );
              }

              // Add for submission to counter
              timesSubmitted++;
            }
      });
  }else{
      // Alert user they can not sumbit anymore!
      alert('You may only submit this from 5 times per minute!');
  }
}

答案 3 :(得分:0)

不,没有办法在客户端对此进行限制(您可以尝试使用JavaScript来强制执行此类限制,但可以通过禁用JS轻松省略)。您可以对目标脚本强制执行此类限制,如果经常

,则拒绝表单处理