17
<input type="submit" name="btnADD" id="btnADD" value="ADD"/>

ユーザーが追加ボタンを 2 回クリックすると、同じデータがテーブルに 2 回送信されます。したがって、ユーザーが2回送信することを制限するのを手伝ってください。

4

15 に答える 15

31

フォームが送信されたら、送信ハンドラーをハイジャックして「無効化」する jQuery を使用してハンドラーをアタッチします。

var $myForm = $("#my_form");
$myForm.submit(function(){
    $myForm.submit(function(){
        return false;
    });
});

送信ハンドラーから「false」を返すと、フォームが送信されなくなります。ボタンを無効にすると、フォームの処理方法に奇妙な影響が及ぶ可能性があります。このアプローチは、基本的に副作用がなく、複数の送信ボタンがあるフォームでも機能するようです。

于 2014-02-18T06:29:30.563 に答える
6

クリックした後にボタンを無効にするか、非表示にすることができます。

<input type="submit" name="btnADD" id="btnADD" value="ADD" onclick="disableButton(this)"/>

js:

 function disableButton(button) {
     button.disabled = true;
     button.value = "submitting...."
     button.form.submit();
}
于 2013-05-29T12:46:38.030 に答える
4

Java サーバー側スクリプトを使用していて、struts 2 も使用している場合は、トークンの使用について説明しているこのリンクを参照してください。

http://www.xinotes.org/notes/note/369/

トークンを生成し、最初のページのレンダリングのためにセッションに保持する必要があります。リクエストがトークンとともに初めて送信されると、struts アクションでスレッド名をトークン ID としてスレッドを実行し、クライアントが持っているロジックを実行します。が要求された場合、クライアントが同じ要求を再度送信すると、スレッドがまだ実行されているかどうかを確認し (thread.getcurrentthread().interrupted) まだ実行されている場合は、クライアントにリダイレクト 503 を送信します。

また、フレームワークを使用しておらず、シンプルなワークアウトを探している場合。あなたはの助けを借りることができます

java.util.UUID.randomUUID();

ランダムなuuidをセッションと非表示のフォームフィールドに配置し、反対側(データをデータベースに保存するなどの他の作業を処理しているjspページ)でセッションと非表示のフォームフィールドからuuidを取り出します。フォームフィールドが一致する場合さらに先に進む前に、セッションから uuid を削除してください。そうでない場合は、フォームが再送信された可能性があります。

あなたの助けのために、私は物事を達成する方法についてのアイデアを与えるためにいくつかのコードスニペットを書いています.

<%
String formId=(java.util.UUID.randomUUID()).toString();
session.setAttribute(formId,formId);
%>
<input type='hidden' id='formId' name='formId' value='<%=formId%>'>
于 2014-12-13T17:38:20.903 に答える
4

コーヒーを飲みすぎていることをユーザーに通知することもできますが、最善の方法は、次のように JavaScript でボタンを無効にすることです。

$("#btnADD").on('click', function(btn) {
  btn.disabled = true;
});
于 2013-05-29T12:54:53.220 に答える
2

ローグリーダーの答えに基づいて解決策を作成しました:

jQuery('form').submit(function(){
    jQuery(this).unbind('submit'); // unbind this submit handler first and ...
    jQuery(this).submit(function(){ // added the new submit handler (that does nothing)
        return false;
    });
    console.log('submitting form'); // only for testing purposes
});
于 2014-12-13T16:58:58.990 に答える
1

[OK] をクリックすると、[OK] ボタンのあるポップアップを使用して成功メッセージを表示できます。別の場所にリダイレクトします。

于 2013-05-29T12:45:56.793 に答える
1

送信ボタンを無効にする

$('#btnADD').attr('disabled','disabled');

      or

$('#btnADD').attr('disabled','true');
于 2013-05-29T12:46:02.273 に答える
1

送信時にフォームにクラスを追加し、ユーザーのダブルクリック/送信を停止します

$('form[method=post]').each(function(){
   $(this).submit(function(form_submission) {
     if($(form_submission.target).attr('data-submitted')){
        form_submission.preventDefault();
     }else{
        $(form_submission.target).attr('data-submitted', true);
     }
  });
});
于 2017-11-27T15:55:24.253 に答える