最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Sweet alert. Display countdown in alert box - Stack Overflow

programmeradmin4浏览0评论

I have an issue with displaying the countdown in sweetalert message. After click i use the "A message with auto close timer". I want that countdown to be in the message and user can see the countdown.

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

I have an issue with displaying the countdown in sweetalert message. After click i use the "A message with auto close timer". I want that countdown to be in the message and user can see the countdown.

swal({  
    title: "Please w8 !",
    text: "Data loading...",
    timer: 10000,
    showConfirmButton: false 
});
Share Improve this question edited Apr 27, 2016 at 11:33 michaPau 1,64819 silver badges25 bronze badges asked Apr 27, 2016 at 11:10 Filip MartiakFilip Martiak 851 silver badge6 bronze badges 2
  • I don't think it is possible without changing the library. Perhaps this answer to a similar question can work for you. – michaPau Commented Apr 27, 2016 at 12:12
  • 1 See my answer. You will find complete solution (: – Ali Mamedov Commented Apr 27, 2016 at 12:13
Add a comment  | 

2 Answers 2

Reset to default 19

It is impossible to do with SweetAlert. It doesn't support counting on UI. But never say never :-)

I have prepared a little hack, which can help you to do that. Just add the code below to your application, and you will see live counting mechanism. And don't forget to add jQuery too.

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);

Result:

Here is better solution

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)

  1. 暂无评论