2012-03-30 11 views
-4

ボタンが既にクリックされている場合、どのようにサーバーへのデータ送信を停止できますか?私は無効= "無効"の応答(ボタンはカスタムメイド)を望んでいません。JS、実行されている場合にプロセスの実行を停止する方法...?

ボタンをクリックしたときにグローバルvar button_clicked = FALSE;をtrueに設定してみました。その後、応答を受け取ったときに再びfalseに設定しました。しかし、それは私のマウスが台無しになってスパムのクリックが本当に速いので(これは実際には一度だけクリックしても、この方法はあまりにも痛いわけではありません)

プロセスを停止するか、DOM要素onClickを無効にする方が良い方法はありますか?多分、イベントを無効にしますか? jsまたはjqueryの回答が望ましいあるいは、これは本当に速いリクエストでは本当にできません。私はそれが(ユーザーのCPUのような)たくさんのものに依存していることを知っています。どんなコメントや答えも歓迎です。たぶん、ページをクリックするたびに、ユーザーは数ミリ秒待つように設定されるでしょうか?

+0

ので、このボタンは何ですか? AJAXリクエストのこの部分ですか?これはフォームの送信ボタンですか?指定することはできますか? – Joseph

+0

私はそれがカスタムボタンだと言っています(buton ur submit tagsを使用していません)。はい、それはajaxリクエストです。 –

+1

あなたのコンピュータはあなたのクリックスピードより速いでしょう。使用したコードを表示できますか?あなたが必要とするものについては、旗がうまくいくはずです。 – Louis

答えて

1

この小さなコンストラクタを試してみてください。

function MyForm() 
{ 
    this.check = false; 

    this.form = function(){ 
    var f = this; 
    $('#form').submit(function(e){ 
     e.preventDefault 
     if(f.check === false) 
     { 
     f.check = true; 
     $.ajax({ 
      ...blah blah 
      success: function(data) 
      { 
      //if you want to let them send again, uncomment this next line 
      //f.check = false; 
      } 
     }) 
     } 
    }); 
    this.form(); 
} 

$(document).ready(function(){ 
    var my = new MyForm(); 
}); 
0

イベントリスナーを登録した場合、取得するイベントオブジェクトはpreventDefault()メソッドになります。これにより、クリックされたリンクや送信されたフォームの送信を回避できます。

イベントハンドラによってトリガされるカスタムアクションの場合、唯一の可能性は、ハンドラ関数内の条件を実際に実行する必要があるかどうかをチェックすることです。しかし、何も起こらないことをユーザーに知らせる必要があるため、無効化されたボタンはそれほど悪くありません。

0

ボタンをクリックしたときにクリックハンドラを削除します。次のクリックの準備ができたら、もう一度追加してください。

button.onclick = null; 
関連する問題