2013-04-23 13 views
5

これは単純ですが謝罪します。私はJQueryを初めて使用しています。私は検索してthisのような質問を見つけましたが、私の質問にはあまり答えてくれないようです。ブラウザの停止ボタンをクリックしてアクションを実行

私は長い時間がかかるアクションのダム進行状況インジケータを表示するためにはJQueryを使用しています:

$(document).ready(function() { 
    $('form').submit(function() { 
     $('#progress').show(); 
    }); 
}); 

ユーザーがフォームのボタンをクリックすると、私はアニメーションGIFでのdivを示しています。このdivは、ページが表示される残りの時間に表示されます。フォームのアクションが完了すると、新しいページが読み込まれます。

これはうまくいきますが、アクションが完了する前にユーザーがブラウザで「停止」をクリックするとどうなりますか? divを消してもらうにはどうすればいいですか?このイベントをキャッチする方法はありますか?それとも、状況全体を処理するためのより良い方法がありますか?

ありがとうございました。

+0

あなたはそのイベントをキャプチャすることができます:あなたが試すことができますどのような

は、進捗ダイアログが小さいタイムアウト後に消えるようにすることです。しかし、より良い方法は、AJAXを使用してフォームデータを送信することです。おそらく[これをチェックしてください](http://stackoverflow.com/questions/1960240/jquery-ajax-submit-form) – musefan

+0

"onstop"イベントがあります。これはクロスブラウザではなく、あまり信頼性がありません。 – Xotic750

+0

divを選択して削除できますか?何かのように: '$( '#progress')。remove()'はDOMから取り出します。何が起こっているのかを止めることはありません。これを行うには、アクションの実行方法に基づいて他のアクションが必要です。 – ckersch

答えて

0

これを処理するために "onstop"イベントを使用できますが、これはIEでのみ機能します。他のブラウザでもこのようなイベントを処理できないと思います。それはそうです

$('form').submit(function() { 
    $('#progress').show(); 
    setTimeout(function(){ 
      $('#progress').hide(); 
    },3000); 
}); 
+0

はい、私はそれが不可能であると結論しました。ただし、タイムアウトが実際に役に立たないと消えてしまいます。それはそれをさらに混乱させます:タスクが完了する前にダイアログボックスが消えます(ユーザーはそれが失敗したと思うようになります)。停止(ユーザーがそれがまだ進行中であると思うようにする)をクリックすると消えるのにしばらく時間がかかります。または両方。 –

関連する問題