2016-04-21 135 views
2

我在我的頁面上有一個提交按鈕。有時當我雙擊它時顯然會提交雙重提交,問題是我將信息保存在數據庫中,所以我將在那裏重複信息,而我不想那樣。我嘗試了一些像下面這樣的jquery代碼,但它並不適合我。如何防止提交按鈕上的雙擊事件

這裏我的按鈕標籤是:

<input type="submit" id="btnSubmit" class="btn btn-large btn-success" style="padding-right:40px; padding-left:40px; text-align:center;"> 
 

的Jquery:

$(document).ready(function() 
    { 
    $('#btnSubmit').dblclick(function() 
    { 
     $(this).attr('disabled',true); 
     return false; 
    }); 
    }); 

如何進一步進行的preventDefault不工作

$(document).ready(function() { 
    alert("inside click"); 
    $("#btnSubmit").on('dblclick', function (event) { 

     event.preventDefault(); 

}); 
}); 
+0

的問題是重複的信息,那麼你應該的點擊 – Shine

+0

可能的複製[防止jQuery中重複提交的表格(http://stackoverflow.com/questions/2830542/prevent-double-submission後禁用按鈕jQuery中的表單) – Teo

+0

這似乎是一個xy問題 – madalinivascu

回答

3

使用的setTimeout一個更加用戶友好的方式

$(document).ready(function() { 
    $("#btnSubmit").on('click', function (event) { 
      event.preventDefault(); 
      var el = $(this); 
      el.prop('disabled', true); 
      setTimeout(function(){el.prop('disabled', false); }, 3000); 
    }); 
}); 
1

你也可以使用,jQuery的one()來實現它,這會火該事件只有一次,然後阻止事件處理程序。

$(document).ready(function() { 
    $("#btnSubmit").one('click', function (event) { 
      event.preventDefault(); 
      $(this).prop('disabled', true); 
    }); 
}); 
0

試試這個,

$(document).ready(function() { 
    $("#btnSubmit").on("click", function() { 
     $(this).attr("disabled", "disabled"); 
     doWork(); //this method contains your logic 
    }); 
}); 
0

什麼,你應該做的是禁止在首次mouseup事件的按鈕並保持禁用,直到你的Ajax調用成功。

$(document).on('ready', function(){ 
    $('#btnSubmit').on('mouseup', function(event){ 
     var $this = $(this); 
     if($this.prop('disabled')) return; 
     $(this).prop('disabled',true); 
     $.ajax({ 
      /* 
      Your config 
      */, 
      success: function(data){ 
       console.log(data); 
       $this.prop('disabled', false); 
      } 
     }); 
    }); 
}); 
0

試試這個

$(document).ready(function() { 
 
    $("#btnSubmit").one('click', function (event) { 
 
      event.preventDefault(); 
 
      //do something 
 
      $(this).prop('disabled', true); 
 
    }); 
 
});

0

jQuery的一個()將啓動一次附加的事件處理程序結合的每種元素,然後刪除該事件處理程序。

如果由於某些原因不能滿足要求,也可以在點擊按鈕後完全禁用按鈕。



      $(document).ready(function() { 
       $("#btnSubmit").one('click', function (event) { 
       event.preventDefault(); 
       //do something 
       $(this).prop('disabled', true); 
       }); 
      }); 

-1

試試這個

$(document).ready(function(){ 
 
    $('#btnSubmit').dblclick(function(e){ 
 
    e.preventDefault(); 
 
    }); 
 
});

+0

幸運的是,這個答案几乎不是重複的 –

+0

沒有任何作品適合我,它再次顯示重複條目。 –

1

只是把這個方法在你的表格,然後它會處理雙擊或一次點擊更多。 一旦請求發送它將不允許發送一次又一次的請求。

<script type="text/javascript"> 
      $(document).ready(function(){ 
       $("form").submit(function() { 
         $(this).submit(function() { 
          return false; 
         }); 
         return true; 
        }); 
      }); 
      </script>