2012-01-12 24 views
-1

最後の500ミリ秒間フォームが送信されているかどうかを確認する必要があります。それが提出された場合、それが提出することを防ぎます。これは私のチャットのためのもので、最後のメッセージが最後の500ミリ秒間送信された場合、メッセージを送信するためにユーザーを停止する必要があります。スパムを防ぐためには、1秒あたり2メッセージになります。ありがとうございました! :)タイムスタンプを差し引いてミリ秒を取得

+1

クライアント側でのみ行うべきではありません。ユーザーはチャットを迷惑メールに惑わす可能性があります。 – Connum

+1

あなたがこれまでに試したことをお見せして、あなたの質問を実際の質問に編集してください。* "plzは私のコードをO_oしてくれます" * –

+0

私はあなたを怒らせるつもりはない、@jroi_web。しかし、私はしばしば、なぜ変数を保存し、基本的な計算などを行うことの最も簡単な問題に問題を抱えている人々がWebチャットのような高度なスクリプトを作成しようとするのだろうかと疑問に思います。私はそれを得ていない! ;) – Connum

答えて

3

はこれを試してください:あなたの提出ハンドラで

var start= (new Date()).getTime(); 
................... 
var now = (new Date()).getTime(); 
var diff = now - start;//diff should be in milis 
+0

これは私がやろうとしていることです...違いがミリ秒であるかどうかわかりません。確認してください。 :) –

3

、最後の提出の時間を格納します。ユーザーがフォームを送信するたびに、最後の送信時刻を現在の時刻と照合します。

< 500 msの場合は、event.preventDefault()メソッドを使用して送信をキャンセルします。

$('yourForm').on('submit', function (e) { 
    var self = $(this); 
    var lastSubmission = self.data('last') || 0; 
    var now = (new Date()).getTime(); 

    if (lastSubmission - now > 500) { 
     self.data('last', now); 
    } else { 
     e.preventDefault(); 
    } 
}); 
+0

助けてくれてありがとう@matt ...私はjqueryの初心者です。私はあなたのコードの部分を理解しませんでした "self.data( '最後')" ..これは "最後の"は入力ボックスのIDまたは名前ですか?あなたを迷惑させて申し訳ありませんが、私はすぐにそれを研究しようとします。あなたの助けを感謝します。:) –

関連する問題