2016-04-22 6 views
0

jqueryvalidationを使用しているフォームがあり、サブミットが検証されています。それが起こると、ボタンを無効にし、それを「提出する..」に変更して、フォームを送信します。送信ボタンを無効にしても、依然としてダブル・サブミットが発生する

問題は、ボタンが無効になっているように見えますが、クリックし続けると、複数回送信され、X個のデータがデータベースに送られます。

これは、提出を処理するコードである:ここでは

submitHandler: function(form) { 
    $('#SaveTraining').val('Submitting...'); 
    $('SaveTraining', this).attr('disabled', 'disabled'); 
    form.submit(); 
    // return false; 
} 

がボタンです:

<input type="submit" id="SaveTraining" name="SaveTraining" class="btn btn-success" <cfif rc.candidateActive EQ 2>disabled</cfif> value="Save Training"> 

ボタンは、候補場合に表示を表示するかどうかをCFの少しを内蔵していますアクティブです。

もう一度このボタンをクリックするだけの方法はありますか?

+1

2番目の '$( 'SaveTraining')'に '#'がありません。 – Barmar

+0

コピーエラーですか、それとも実際のコードですか? – Barmar

+0

@Barmar#を追加しても同じ結果が得られました。実際のコードでもあります。 – weggie

答えて

1

あなたはあなたのコードのタイプミスがあると私は, thisがどちらか必要とされているとは思わない:

submitHandler: function(form) { 
    $('#SaveTraining').val('Submitting...'); 
    $('#SaveTraining').attr('disabled', 'disabled'); 
    form.submit(); 
    // return false; 
} 

しかし、あなたは、フォームの送信で作業しているとそれが呼び出されるハンドラを提出するための別の方法は、(そこにありますあなたがブロックしたいと思うかもしれない)あなたは、以下のようなグローバル変数でそれを行うことができます。

submitted = false; 
..... 
submitHandler: function(form) { 
    $('#SaveTraining').val('Submitting...'); 
    $('#SaveTraining', this).attr('disabled', 'disabled'); 
    (!submitted) { 
     // I will submit only this time... 
     submitted = true; 
     form.submit(); 
     return true; 
    } 
    return false; 
} 
+0

"これを削除して '#SaveTrainingを追加したようです。 – weggie

+0

@weggie 'jQuery'はセレクタの$(...)を右から左に読み出すので、見つけられなかった「#SaveTraining」のために' this'を探していました。 – MattSizzle

+0

奇妙な、私はそれを動作させるために私の返信に入れたが、それはカットされた..ありがとうもう一度@mattSizzle – weggie

関連する問題