2016-04-29 11 views
0

長時間実行されているプロセスのブロックUIテキストを更新する方法についてはドキュメントにありません。たとえば、選択したオプションに応じてフォームに変更を保存すると、さまざまなプロセスがトリガーされ、その中には時間がかかるものがあります。私は最初のブロックUIメッセージが "処理中..."と言い、15秒後に "まだ動作しています..."と言ってもらいたいと思います。そのため、ユーザーはページのタイムアウトを考えていません。私はこれがgmailで行われているのを見て、その機能を再現したいと思っています。これに利用できるガイダンスはありますか?jQueryブロックUI - 更新中Xの時間が経過した後に「しばらくお待ちください...」というメッセージが表示される

+0

あなたは['$ .blockUI({メッセージ:"まだ動作しています... "})'](http://malsup.com/jquery/block/#options)を試しましたか? –

+0

私はそれを持っていますが、どれくらいの時間が経過したかを判断する方法はわかりません。私はそれをほぼ直ちに起こした挿入ポイント。私はプロトタイプを思い出して、 "ハートビート"のように振る舞うはずのajaxアップデータがあったが、jQueryやJavascriptのようなものは認識していない。私は正しい検索語を使っていないかもしれません。 – HPWD

答えて

0

あなたを助けるかもしれない何かはsetTimeoutです。 Nミリ秒後にいくつかのコードを実行することができます。一致する関数clearTimeoutがあり、setTimeoutハンドラをキューから「削除」します。これらのツールを使用

は、あなたがこれまであなたのコードは、同様の構造ができます。これにより

var timeoutID; 

function startBlocking() { 
    // do your stuff... 
    $.blockUI({ message: "Processing..." }); 
    timeoutID = setTimeout(function() { 
    $.blockUI({ message: "Still working..." }); 
    }, 15000); 
} 

function stopBlocking() { 
    // This is called whenever your processing is done 
    clearTimeout(timeoutID); 
} 

、メッセージはプロセスが完了していない場合にのみ、15秒後に変更されます。完了すると、効果的に$.blockUI({ message: "Still working..." })が実行されなくなります。

+0

私はそのようなsetTimeoutを利用することができるのかどうかはわかりませんでした。ロジックの追加。 – HPWD

+0

setInterval()を使用することも可能ですか? – HPWD

+0

@HPWD 'setInterval'を使うことができますが、特にsetTimeout'を使うのは良い考えです。特に、繰り返して繰り返したくない場合は("入れ子にした "setTimeout'sはa非常に良いオプション)。 –

関連する問題