2011-12-04 1 views
4

開いている間:オープンfancybox fancyboxの別のインスタンスは、ユーザーがボタンをクリックすると、私はアクションが完了するまでユーザーが待つ必要があることを示しfancyboxを示し

jQuery(document).ready(function() { 
      $.fancybox('Please Wait...',{'modal':true}); 
     }); 

今私は経由で要求されたアクションを確認します$ .post機能と(アクションが失敗した理由のいずれかのアクションが成功したかエラー)結果メッセージを返すことは、今私が最初fancyboxを閉じて、私はアヤックスから得た応答で新しいfancyboxを表示したい:

$.post('someurl.aspx',{'somethingtopost':'value'}, 
function(data){ 
jQuery(document).ready(function() { 
$.fancybox(data); 
     }); 
    } 
); 

問題は2つ目のfancyboxが表示されないことです。 (onClosed属性に追加する)最初のものを閉じるときに2番目のfancyboxを表示する例はたくさんありますが、最初のものを閉じると2番目のfanyboxを表示したくないので、完了しました。

答えて

7

すでに開いている(と最初に閉じない)に関係なく、いつでも2つ目のファンシーボックスを起動できます。アクションが完了したら、もう一度Fancyboxを起動してみてください。

第2のFancyboxウィンドウ(一度トリガーされる)は、それ以上のクローズコマンドなしで最初のウィンドウを置き換えます。

function openFancybox() { 
    setTimeout(function() {$('#delayed').trigger('click'); },10000); 
} 
$(document).ready(function() { 
    $('#pageLoad').fancybox({ 
     helpers: {overlay:{opacity: 0.3}} 
    }).click(); 
    openFancybox(); 
    $('#delayed').fancybox({ 
     helpers: {overlay:{opacity: 0.3}} 
    }); 
}); // ready 

私はそれが10秒後に第2のFancyboxを発射、ページのロードにFancyboxを開始example page hereを設定します。

第1ファンシーボックスは、第2ファンが発射された後に自動的に閉じます。

UPDATE

それともあなたは、ボタンのクリックでthis version

function openFancybox() { 
    setTimeout(function() {$('#delayed').trigger('click'); },10000); 
} 
$(document).ready(function() { 
    $('#goProcess').click(function(){ 
     $.fancybox({ 
      href: '#wait', 
      modal: true, 
      helpers: {overlay:{opacity: 0.3}}, 
      afterLoad: function() { 
       openFancybox(); 
      } 
     }); // fancybox 
    }); 
    $('#delayed').fancybox({ 
     helpers: {overlay:{opacity: 0.3}} 
    }); 
}); // ready 

オープンfancyboxを好むだろう、その後、10秒 後の第2 fancyboxをトリガー(またはバックグラウンドでの処理が完了した後)

+0

あなたの回答とあなたが作成した例をありがとうございました。問題は、ajaxが値を返した後、2番目のfancyboxが現れなければならず、新しいfancyboxが示す内容はajaxレスポンスから取得したデータです。 $ .fancybox( 'content1); $ .fancybox( 'content2');ここではcontent1のみが表示され、2つ目は無視されます。 –

+0

私が理解する限り、最初のFancyboxはボタンをクリックすると開き、2番目のボタンはajaxの呼び出しから返された値で開きます。もしそうなら、〜を含めるべきだと思います。 } - あなたのajax呼び出しで2番目のfancyboxを起動する....私はあなたが必要とすると思います - data:$(this).serializeArray() - 複数のコンテンツフィールド。 ajax呼び出しからfancyboxを呼び出す方法の例については、http://fancybox.net/blogを参照してください。 – JFK

+0

ちょうどチャイムしたいと思って、私は別の問題を悩まされた後、同じ答えでこの答えを見つけたと言います。私は1つを閉めようとしていて別のものを開こうとしていて、あらゆる種類のエラーを引き起こしていました。ありがとう@JFK –

関連する問題