2016-08-29 2 views
0

フォームが送信されたら、ボタンを有効にしようとしています。 ボタンを有効にできますが、フォームがプロセスを完了してからボタンを有効にするまで待つ必要があります。私はsetTimeout()を使用して数秒待つことができますし、ボタンを有効にしますが、私はそれを望んでいません。フォームが処理を完了したら、ボタンを有効にしておきたい。これが可能なユースケースかどうかはわかりません。フォームをJavaScriptを使用して送信した後にボタンを有効にする方法

フォーム:

<input type=submit id="myButton" class="esignReports" value="Export E-Sign Information" onclick="disableReportButton(), enableReportButton()"/> 

JS:

function disableReportButton() { 
    document.getElementById('viewIntegrationReport').submit(); 
    document.getElementById('myButton').disabled = true; 
    document.getElementById('myButton').value = 'Please wait'; 
} 

function enableReportButton() { 
    document.getElementById('myButton').disabled = false; 
    document.getElementById('myButton').value = 'Export E-Sign Information'; 
} 

感謝。

+0

私はあなたが達成したいかについて、特に明確ではありませんよフォーム。 UIでサンプルユースケースを教えてもらえますか? – Xiaoerge

+0

Ji私がお勧めするのは、プロセスのステータスをn秒ごとにチェックすることです。プロセスはステータスを返信し、そのチェックを行う関数を作成し、その関数を実行するためにsetTimeoutを使用します。ステータスの関数内ではまだ処理中ですが、同じ関数を再度呼び出すsetTimeoutを使用すると、処理が完了するまで実行されます。再試行でも確認することをお勧めします。そうでない場合は、無限ループになります。 –

答えて

0

例えば、AJAXを経由して提出し、その後、イベントを提出

$(document).ready(function() { 
    document.getElementById('myButton').hide(); 
    function enableReportButton(callback) { 
     $("form").on("submit", function(e){ 
      e.preventDefault(); 
      callback(); 
     }); 
    } 

    enableReportButton(function() { 
     document.getElementById('myButton').show(); 
    }); 
} 
+0

質問はJavaScriptについてです。 JQueryタグはありません。 – Jaykumar

1

防ぎフォーム(スクリプトファイル)をapp.jsでこれを試してみてください。 jQuery $ .postを使用します。

$("form").on("submit", function(e){ 
    e.preventDefault(); 
    $.post(/* your data here */) 
     .done(function(){ 
      // do stuff after post 
      disableReportButton(); 
      enableReportButton(); 
     }; 
}); 

例$アヤックスで、成功を使用して:あなたの関数を呼び出すための.done(または$のアヤックスでの成功ハンドラ)を使用しSubmit form via AJAX in jQuery

関連する問題