可能重複返回值:
How to create TRULY modal alerts/confirms in Javascript?從定製警報
TL; DR:我已經覆蓋了基於自定義HTML一個默認alert()
功能。我希望新對話仍然阻止執行,並讓我的對話中的按鈕返回true
或false
從調用到alert()
以在邏輯中使用(並繼續執行)。
我想實現一個自定義警告框,它與具有相同(或類似)功能的一個很好的主題框替換默認瀏覽器的警報。
我讀過this的問題,我正在使用this answer(針對同一個問題)給出的解決方案。我想現在要做的是讓我重寫警惕返回if()
語句中使用的true或false值,這取決於是否OK
或Cancel
被點擊:
if(alert('Confirm?') {
// Do stuff
}
然而,由於有自定義HTML而不是正常警告我不能做有兩個原因如下:
- 我不能從更換對話框按鈕返回一個值(點擊與
$.on()
必然事件),因爲我不知道怎麼樣。 - 據我所知,我無法用此警報阻止程序流程。
我必然$.on()
事件在更換對話Cancel
和OK
按鈕其中隱藏的框。這些工作正常,但我現在遇到的問題是當單擊按鈕時返回值,以便執行將暫停,直到用戶執行操作。
HTML:
<div class="alert background"></div>
<div class="alert box">
<div class="message"></div>
<hr>
<div class="buttons">
<input type="button" name="cancel" value="Cancel">
<input type="button" name="confirm" value="OK">
</div>
</div>
當前的JavaScript:(在我的鏈接的問題的答案几乎是一個抄送)
(function() {
nalert = window.alert;
Type = {
native: 'native',
custom: 'custom'
};
})();
(function (proxy) {
proxy.alert = function() {
var message = (!arguments[0]) ? 'null' : arguments[0];
var type = (!arguments[1]) ? '' : arguments[1];
if (type && type == 'native') {
nalert(message);
} else {
// Custom alert box code
console.log(message);
}
};
})(this);
理想情況下,我希望能夠把像這樣在// Custom alert box code
部分:
$('.alert.box input[name="confirm"]').on('click', function() {
// Hide dialogue box - I can do this already
// *** Return `true` or other truthy value from
// alert for use in `if()` statements
});
因此,當單擊按鈕OK
或Cancel
時,它將刪除自定義警報框並從調用返回true或false值到alert()
。我已經可以通過$.fadeOut()
和$.remove()
刪除警報,這很容易。什麼不是知道如何讓按鈕點擊事件得到alert()
(覆蓋)返回的東西。
我試過儘可能清楚,但我可能錯過了一些東西。請讓我知道,如果我有。
我認爲這是根本不可能的,因爲瀏覽器的默認對話框是唯一的東西,可以在JS是模式。模式對話的想法似乎並不存在於JavaScript – 2012-01-14 22:16:53
你知道嗎,我問了[同樣的事情](http://stackoverflow.com/questions/1820564/how-to-create-modal-alerts-確認在JavaScript中)一段時間後。 – 2012-01-14 22:18:22
@Pekka我在輸入我的問題時查看了一些建議,但找不到任何相關的問題。您的問題的答案似乎集中在使用框架或瀏覽器特定版本。我正在尋找一個跨平臺的解決方案。 – Bojangles 2012-01-15 00:56:17