Сладкое оповещение. Отображение обратного отсчета в окне предупреждения

У меня проблема с отображением обратного отсчета в сообщении sweetalert. После нажатия я использую «Сообщение с таймером автоматического закрытия». Я хочу, чтобы этот обратный отсчет был в сообщении, и пользователь мог видеть обратный отсчет.

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

person Filip Martiak    schedule 27.04.2016    source источник
comment
Я не думаю, что это возможно без изменения библиотеки. Возможно, вам подойдет этот ответ на аналогичный вопрос.   -  person michaPau    schedule 27.04.2016
comment
Смотрите мой ответ. Вы найдете полное решение (:   -  person Ali Mamedov    schedule 27.04.2016


Ответы (2)


Это невозможно сделать с SweetAlert. Он не поддерживает расчет пользовательского интерфейса. Но никогда не говори никогда :-)

Я подготовил небольшой лайфхак, который поможет вам в этом. Просто добавьте приведенный ниже код в свое приложение, и вы увидите механизм подсчета в реальном времени. И не забудьте добавить 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);

Результат:

введите описание изображения здесь

person Ali Mamedov    schedule 27.04.2016
comment
WOW хак идет очень хорошо. Большое тебе спасибо ! Он делает именно то, что я хотел... :) - person Filip Martiak; 27.04.2016
comment
Это потрясающе. Простое решение, но очень умное. Сам бы не придумал, но его легко настроить и понять. +1! - person Angel ofDemons; 20.06.2016

Вот лучшее решение

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);
    }
})();
person Andrey Etumyan    schedule 27.04.2016
comment
Почему вы устанавливаете свойство таймера undefined, если isTimerStarted == true? - person Astemir Almov; 13.04.2018