0

私はasp.netフォームを持っています。これにより、ユーザーはWebサービスを使用してこれらすべての値をSharePointリストに内部的に送信/保存する登録フォームを送信できるため、ページの送信時に通常のフォームよりも処理時間が少し長くなります。

ページがサンクス ページにリダイレクトされる前に、ユーザーは送信ボタンを再度クリックする傾向があり、これが同じレコードの複数送信の原因となっています。

この送信を制限する方法を提案してください。ボタンをクリックすると、データ検証に jquery 関数を使用しています。そこで btn.disable = true メソッドを使用してみましたが、else ブロックに到達すると (検証を通過した後、これはdisable = true コードはどこにあります) btn.disable = true ステートメントを読んだ後にフォームを送信しません。

専門家の方、道を教えてください。

前もって感謝します。

4

3 に答える 3

4

Nathan Long のプラグインを参照してください: https://stackoverflow.com/a/4473801/1414562

{入力が変更された場合にフォームを再送信できるように変更}

// jQuery plugin to prevent double submission of forms
jQuery.fn.preventDoubleSubmission = function() {
  var $form = $(this);
  $form.on('submit',function(e){ //on here instead of bind    
    if ($form.data('submitted') === true) {
      // Previously submitted - don't submit again
      e.preventDefault();
    } else {
      // Mark it so that the next submit can be ignored
      $form.data('submitted', true);
    }
  }).find('input').on('change',function(){
       $form.data('submitted',false);
  });

  // Keep chainability
  return this;
};

次のように使用します。

$('form').preventDoubleSubmission();
于 2013-05-03T17:02:31.277 に答える
0

ご覧のとおり、onclick ハンドラーでボタンを無効にすると、サーバーにリクエストが送信されません。これを回避するための簡単な「ハック」は、ボタンをすぐに無効にするのではなく、ボタンを無効にsetTimeoutする機能を、たとえば 5 ミリ秒で実行するようにスケジュールすることです。これにより、ボタンが無効になる前にリクエストをサーバーに送信できますが、実際にボタンを 2 回クリックするのに十分な時間がありません。

于 2013-05-03T17:02:04.057 に答える