我有一个textarea:
<form id='test'>
<textarea class='test2'> </textarea> <input type='submit' value='send'/>
</form>
我想知道是否有办法限制用户提交textarea的次数(例如,每分钟5次)。
编辑: 我想在客户端使用Javascript进行此操作。
编辑2:
这是聊天。我只是不希望人们能够在一小段时间内发布太多消息。因此,如果他们刷新页面以达到极限,这不是一个问题,他们需要花费足够长的时间......
答案 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();
});
});
答案 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轻松省略)。您可以对目标脚本强制执行此类限制,如果经常
,则拒绝表单处理