jquery submit を使用してデータを要求する webapplication を作成していますが、最初にフォームを送信した後、フォームを複数回送信したくありません。だから私は提出した後、次の提出が数秒間何もしないことを望みます。
$("#updatestock_form").submit(function(e){
// requesting my data..
});
どうすればこれを達成できますか?
jquery submit を使用してデータを要求する webapplication を作成していますが、最初にフォームを送信した後、フォームを複数回送信したくありません。だから私は提出した後、次の提出が数秒間何もしないことを望みます。
$("#updatestock_form").submit(function(e){
// requesting my data..
});
どうすればこれを達成できますか?
「だから私は、送信後、次の送信が数秒間何もしないことを望んでいます。」
ユーザーの 2 回目以降の送信試行を特定の秒数が経過するまで無視することを意味する場合は、さまざまな方法でそれを行うことができます。最初に頭に浮かんだのは次のとおりです。
var allowSubmit = true;
$("#updatestock_form").submit(function(e){
if (!allowSubmit) return false;
allowSubmit = false;
setTimeout(function(){ allowSubmit = true; }, 5000);
// your existing submit code here
// requesting my data..
});
つまり、送信が現在許可されているかどうかを示すフラグがあります。送信イベントで、そのフラグが false の場合は、すぐに戻っfalse
て送信イベントをキャンセルします。それ以外の場合 (現在の場合true
)、フラグをfalse
に設定し、タイムアウトを設定して、たとえば 5 秒後にフラグを元に戻してから、既存の送信コードを続行します。
$("#updatestock_form").submit(function(e){
$(this).unbind("submit")
$("#submitButton").attr("disabled", "disabled")
});
とてもシンプルです。
提出する ajax-request を実行していますか? したがって、いくつかのロック変数を作成し、送信時にvar locked;
設定し、ajax 呼び出しが終了したときにリセットします。(成功条件)locked = true;
false
ボタンの onclick イベントでボタンを無効にする
$("#buttonId").bind('click', function() { $(this).attr("disabled", "disabled"); });
操作が成功した後、無効な属性を削除します