質問

私のユーザーがクリックした場合より、フォームの送信ボタンを一回以上、彼は基本的に複数のGET / POSTリクエスト(フォームの環境設定に依存する)を送信します。

私は(あなたが再びJSを使用していることをそのハンドルをキャッチしていない限り)ストップへのユーザの試行(ESC /停止ボタン)場合、それはボタンをリセットしないため、無効には、JSを使用して送信ボタンは、ビット問題があることがわかりますユーザーは次のページから(戻るボタン)戻ってきた場合、送信ボタンはまだ(少なくともFirefoxで)無効になっています。

どのような複数のフォーム提出を無効にするためのベストプラクティスです。

ありがとうございます。

役に立ちましたか?

解決

Javascriptが私のために罰金を動作します。ユーザーは自分の提出は、ユーザビリティの一部であり、中止したときにボタン(s)が戻って有効になっていることを確認して作ります。

あなたはサーバーサイドで多分、その後、JavaScriptを使用して、ボタンを無効にしたくない場合は、特定のタイムスパンで重複したメッセージをキャッチするだろうか?

他のヒント

このかもしれないが、あなたの質問に答えるではないが、私は、サーバー側の要求を識別するために、uniqのは良いアイデアかもしれない何かを生成することだと思います。クライアント側の検証は常に問題があります。

バインドフォームの提出した後、(あなたがリフレッシュしたときに/戻ってリセットする)ページのロードにそのディセーブルにするには、disableます:

function disableSubmits( domNode, toDisable )
{
    domNode = domNode || document.getElementsByTagName( 'body' )[ 0 ];

    toDisable = !!toDisable;

    for( var i = 0; i < inputs.length; ++i )
    {
        if( 'submit' === inputs[i].getAttribute( 'type' ) )
        {
            inputs[i].disabled = toDisable;
        }
    }
}

var onloadhandler = function( )
{
    var theForm = document.getElementById( 'theForm' );

    theForm.onsubmit = function( ){ disableSubmits( theForm, true ); }

    disableSubmits( theForm, false );
};

var old = window.onload;

window.onload =  'function' === typeof old
                 ? function( ){ old(); onloadhandler(); }
                 : onloadhandler;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top