3

重複の可能性:
ダブルクリックイベントが検出されたときにクリック/マウスアップイベントをキャンセルする必要が
ある[送信]ボタンのダブルクリックを防止する

以下の機能があります

$("#btnSubmit").click(function(){
                $("#btnSubmit").attr("disabled", "disabled");
          ....make ajax request
              $("#btnSubmit").removeAttr("disabled");

}

問題は、ダブルクリックの最初のクリックを処理したいということです。またはシングルクリック。ユーザーがダブルクリックすると、関数が2回実行されるためです。.one()を使用すると、シングルクリックのみが処理されます。ただし、ダブルクリックも処理したいのですが、1回だけ処理します。解決策は?

4

3 に答える 3

2

使用する

dblclick()

それ以外のclick()

についてもっと読む.dblclick()

コードは次のようになります

$("#btnSubmit").dblclick(function(){
   $("#btnSubmit").attr("disabled", "disabled");
   $("#btnSubmit").removeAttr("disabled");
});

旗を使うことができます

var alreadyClicked = false;
$("#btnSubmit").click(function(){
   if(alreadyClicked) {
      alreadyClicked = false;
      return false;
   } else {
     alreadyClicked = true;
     $("#btnSubmit").attr("disabled", "disabled");
     $("#btnSubmit").removeAttr("disabled");
   }
});
于 2012-06-13T15:54:29.170 に答える
1

センチネル変数を設定して、ajaxリクエストが完了するまでそれ以上のクリックが実行されないようにします。

var clicked = false;
$("#btnSubmit").click(function(){
    if (clicked) {
        return;
    } else {
        clicked = true;
    }
    $.ajax({
      success: function() {
          clicked = false;
    });
});
于 2012-06-13T15:55:41.860 に答える
0

私の解決策は、ボタンが押されたときに変数のチェックをダブルクリックするのをやめます。

クリック変数は、関数が現在実行されているかどうかを確認するためのチェックとして機能します。

var click = false;
$("#btnSubmit").click(function(){

  if (click == false) {
    click = true;

    $("#btnSubmit").attr("disabled", "disabled");

    //make ajax request

    $("#btnSubmit").removeAttr("disabled");

    click = false;
  }
}
于 2012-06-13T15:56:21.577 に答える