2016-04-27 181 views
3

我在使用sweetalert消息顯示倒計時時遇到問題。點擊後,我使用「帶自動關閉計時器的消息」。我希望倒計時在消息中,用戶可以看到倒計時。甜蜜的警惕。在警示框中顯示倒計時

swal({ 
    title: "Please w8 !", 
    text: "Data loading...", 
    timer: 10000, 
    showConfirmButton: false 
}); 
+0

我不認爲這是可能不改變庫。也許[這個答案類似的問題](http://stackoverflow.com/questions/357188​​99/countdown-in-setinterval-function-with-sweet-alert-plugin)可以爲你工作。 – michaPau

+1

看到我的答案。你會發現完整的解決方案(: –

回答

12

這是不可能與SweetAlert做。它不支持在UI上計數。但絕不說:-)

我準備了一些小技巧,它可以幫助你做到這一點。只需將以下代碼添加到您的應用程序中,即可看到實時計數機制。並且不要忘記添加jQuery。

var 
    closeInSeconds = 5, 
    displayText = "I will close in #1 seconds.", 
    timer; 

swal({ 
    title: "Auto close alert!", 
    text: displayText.replace(/#1/, closeInSeconds), 
    timer: closeInSeconds * 1000, 
    showConfirmButton: false 
}); 

timer = setInterval(function() { 

    closeInSeconds--; 

    if (closeInSeconds < 0) { 

     clearInterval(timer); 
    } 

    $('.sweet-alert > p').text(displayText.replace(/#1/, closeInSeconds)); 

}, 1000); 

結果:

enter image description here

+1

WOW hack進展得非常好,非常感謝!它正在做我想要的東西...... :) –

+1

這真是太神奇了。簡單的解決方案,但真的很聰明。不會自己拿出來,但很容易定製和理解。 +1! –

3

這裏是更好的解決方案

var timer = 10, // timer in seconds 
    isTimerStarted = false; 

(function customSwal() { 
    swal({ 
     title: "Please w8 !", 
     text: "Data loading..." + timer, 
     timer: !isTimerStarted ? timer * 1000 : undefined, 
     showConfirmButton: false 
    }); 
    isTimerStarted = true; 
    if(timer) { 
     timer--; 
     setTimeout(customSwal, 1000); 
    } 
})(); 
+0

快速和酷... thx – NoBody