2012-05-10 14 views
1

ハイパーリンクのクリックイベントでポップアップを開く...ポップアップにはサーバーからのレコードが含まれています。jquery/jscript複数のポップアップを開くのを防ぐ

問題は、すぐにをクリックすると、一度に複数のポップアップが表示されることです。 これを防ぐ方法がありますか?ここで、単一のポップアップに

私のコードを開くことができます。

$('.wrapper_form a.add').click(function(e) 
{ 
    e.preventDefault(); 

    if(typeof(currentPopup) == 'undefined' || currentPopup.closed) 
    { 
     url = 'server_page.aspx'; 
     currentPopup = window.open(url,'server','height=500,width=800'); 
     if (window.focus) {currentPopup.focus()} 
    } 
    else 
    { 
     currentPopup.focus(); 
    } 
}); 
+0

ポップアップは一度だけ行う必要がありますか?一度に1ページの読み込みと同じように? –

+0

ポップアップの1つのインスタンスを開く必要があります – csotelo

答えて

4

ここに1つのアプローチはあります。最高の解決策ではありませんが、うまくいくはずです。このコードが行うことは、リンクを一度にクリックすることを防ぎ、クリックごとに新しいインスタンスを開くようにすることです。このコードでは、ウィンドウを1/2間隔で複数回開くことはできませんが、タイミングを変更することはもちろん可能です。

var hopefullyThisIsNotInGlobalScope = false; 

$('.wrapper_form a.add').click(function(e) 
{ 
if (hopefullyThisIsNotInGlobalScope) 
{ 
return false; 
} 
    hopefullyThisIsNotInGlobalScope = true; 
    setTimeout(function() { hopefullyThisIsNotInGlobalScope = false; }, 500); 
    e.preventDefault(); 

    if(typeof(currentPopup) == 'undefined' || currentPopup.closed) 
    { 
     url = 'server_page.aspx'; 
     currentPopup = window.open(url,'server','height=500,width=800'); 
     if (window.focus) {currentPopup.focus()} 
    } 
    else 
    { 
     currentPopup.focus(); 
    } 
}); 

ポップアップを仮定すると、あなたが窓に取り付けたグローバルVARとhopefullyThisIsNotInGlobalScope変数を置き換えることができるかもしれない、それを起動するウィンドウと同じドメイン上にあります。ポップアップを起動して変更するときにその変数を設定することができますbrowser unload event

+0

私はコードを試してみて、私は答えます(編集)... – csotelo

+0

これはあなたのためでしたか? –

+0

良い解決策...うまくいきます、ありがとう! – csotelo

関連する問題