2013-12-18 42 views
0

我想在javascript中創建一個模態彈出窗口。
但我的要求是每當彈出窗口打開,它將停止執行下一個JavaScript行,直到它關閉。javascript中的函數提醒

例如。

var bool = false; 
DisplayModal("Show Message"); 
bool = true; 
alert("alerted only after closing the pop up : bool = true"); 
bool = false; 

所以,直到我關閉"Show Message"布爾模式彈出不會是真實的。當我關閉彈出,然後剩下的腳本將被DisplayModal後運行在命令......

同樣喜歡alert但我不希望重寫alert ..

我需要一些幫助,在此先感謝.. 。

編輯:

試圖解釋多一點..

我想,當停止執行DisplayModal稱爲
停止執行
後即可彈出顯示
後彈出關閉從下一行繼續(方法:bool = true; ...

+0

可以使用http://jqueryui.com/對話/ – Neha

+0

@Neha:雖然不會停止執行。實際上停止JavaScript的執行幾乎沒有'alert'的替代品。 –

+0

你不能這樣做。你必須使用回調! – Cracker0dks

回答

0

聽起來像是confirm

(function() { 
var result = confirm("I'm Happy?"); 
alert(result ? "Yes, I'm happy" : "No, I'm not happy"); 
}()); 

確認工作會阻止當前的執行線程,直到返回結果

0

alert,prompt,confirm和XMLHTTPRequest是JavaScript中唯一的同步函數。你必須使用事件和回調。

如果您希望用戶在關閉彈出窗口之前不能執行任何操作,可以使透明的div恢復所有頁面(除了彈出窗口...)。

2

如果要自定義對話框的外觀,可以使用jQuery的對話框小部件。它支持事件。我做了一個簡單的例子:http://jsfiddle.net/5CBdm/

您可以將事件處理程序附加到對話框的關閉事件,並將其餘的代碼放入事件處理程序中。

所需的HTML:

<div id="dialog-modal" title="Modal dialog"> 
    <p>Message</p> 
</div> 

和相應的Javascript:

$("#dialog-modal").dialog({ 
    height: 140, 
    modal: true, 
    close: function (event, ui) { 
     alert("Executed when the dialog is closed."); 
    }  
}); 

鏈接到對話框:

http://jqueryui.com/dialog/#modal

http://api.jqueryui.com/dialog/#event-close

+0

我需要純粹的JavaScript ..通過我想在任何函數打開彈出的方式,停止進一步執行然後關閉功能繼續執行.. – Sachin

+0

我明白了。然後作爲@ sebcap26說,你可以使用確認,或者你應該實施某種事件系統。 – dtengeri

1

你可以使用jQuery插件。例如http://dimsemenov.com/plugins/magnific-popup/

或者你也可以自己(嘗試它的jsfiddle:http://jsfiddle.net/T2Vn3/):使

<div class="overlay"> 
    <div class="alert"> 
     This is alert! 
     <br/> 
     <button>OK</button> 
    </div> 
</div> 

<button class="forAlert">Click me!</button> 

JS:

document.querySelector('.alert button').addEventListener('click', function() { 
    document.querySelector('.overlay').style.display = 'none'; 
}, false); 

document.querySelector('.forAlert').addEventListener('click', function() { 
    document.querySelector('.overlay').style.display = 'block'; 
}); 
+0

對於遲到的回覆感到抱歉,但它不會停止執行下一行函數... jsfiddle:http://jsfiddle.net/T2Vn3/1/ – Sachin

+0

@Sac,您可以將代碼添加到第一個點擊處理程序: ('。alert button')。addEventListener('click',function(){/ * here * /},false);' – kmakarychev