2
$(document).ready(function(){

    $("#enviar").click(function(e){

        e.preventDefault();

        //prevent run 2 or more times if the user clicks the button multiple times to send

        $.post(url,{data:data1,data2:data2},function(rp){

        });

    });

});

送信ボタンを無効にせずに、ユーザーがボタンを繰り返しクリックした場合に「投稿」を2回送信しないようにします

4

2 に答える 2

2

特別なクラス (例: : submitting) をマーカーとして使用して、リクエストが進行中であることを示します。

$("#enviar").click(function(e){
    e.preventDefault();

    var btn = this;
    // check if already present :   
    if ( $(btn).is('.submitting') ){
        return;
    }
    // add it before request :
    $(btn).addClass('submitting');

    $.post(url,{data:data1,data2:data2},function(rp){

    }).always(function(){
        // remove it after completion or failure :
        $(btn).removeClass('submitting');
    });
});
于 2013-09-10T16:09:20.903 に答える
1

jQuery の.oneイベントを使用します。

$("#enviar").one("click", function() {
  $.post();
});

ドキュメントから:

要素のイベントにハンドラーをアタッチします。ハンドラは要素ごとに最大 1 回実行されます

または、on/off を使用して追加のチェックを行いたい場合は、次のようにします。

// Set up the initial bind on DOM ready
$("#enviar").on("click", doPost);

function doPost() {
  // Unbind when it is clicked
  $("#enviar").off("click", doPost);
  // Do your post
  $.post(url, {}, function() {
    // You could bind again on success if you want
    $("#enviar").on("click", doPost);
  });
}
于 2013-09-10T16:08:59.623 に答える