複数のHTMLフォームに提出無効にします
-
23-09-2019 - |
質問
私のユーザーがクリックした場合より、フォームの送信ボタンを一回以上、彼は基本的に複数の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;
所属していません StackOverflow