2017-11-03 2 views
-1

CSRFトークンをチェックするか、他のトークンを自分のDBに追加してチェックし、それが既に使用されているかどうかを確認することができます。 Javascriptでこれを処理する簡単な方法です(jqueryを使用すると受け入れられるでしょう)?missclickによって作成された同じフォームの提出を拒否する方法

2回または3回のイベント送信の同時実行を避けたいと思います。 on clicksubmitイベントのボタン/フォームを無効にしても機能しませんでした。

例:

$("#request-form").submit(function() { 
    $(this).attr('disable', true); 
}); 
$('#btn_modal_submit').on('click', function() { 
    $(this).attr('disable', true); 
}); 
+1

いくつかのコードを表示します。 – smilebomb

+0

ボタン/フォームの機能を無効にしなかったのはなぜですか?それは私には標準的な練習のようです – larz

+0

@larz、私はまだボタンですばやくクリックすることができ、複数のリクエストを送信していました。 – mk2

答えて

1

必要な属性がdisabled、ないdisableであり、それは現在のオブジェクトをターゲットにOKだ - しかし、あなたはそう(彼らを想定したように、フォーム上のすべてのボタンを無効にすることを検討する必要がありますすべて「ボタン」タイプ):

$("#request-form").submit(function() { 
    $("button").attr("disabled", "disabled"); 
}); 
$('#btn_modal_submit').on('click', function() { 
    $("button").attr("disabled", "disabled"); 
}); 

またはprop("disabled", true)機能を使用してください。参考資料:https://stackoverflow.com/a/6048113/231716

すべてのボタンを無効にし、正しいフォームがポストバックするまで誤ってクリックするのを防ぐボタンコントロールを直接ターゲットにしました。おそらくフォーム送信とボタンクリックの両方にアタッチする必要はありませんが、それはアプリケーションの動作に依存します。また、AJAXポストバックなどの実際のポストバックでない場合は、window.setTimeoutと組み合わせてボタンを再度有効にすることができます。

+0

これはうまくいきませんでした – mk2

+0

最初に呼び出されたことを確認するために、それぞれにアラート(「ここ」)を入れてください... –

+0

私はモーダルを使用していたので、フォームを送信するためにラベルタグを使用していました...実際のボタン/入力を無効にすると(type = "submit")、それが機能しました。ありがとう – mk2

1

.on()の代わりに.one()をクリックしてフォームを送信することができます。

$('#btn_modal_submit').one('click', function(){ 
    $("#request-form").submit(); 
}); 

http://api.jquery.com/one/

+0

ボタンは一度呼び出されていますが、フォームは複数回呼び出されています – mk2

関連する問題