Сладкий таймер - готовая функция
Я немного поиграл с плагином SweetAlert: Sweet alert
Я хотел сделать кнопку удаления, где пользователь получает запрос перед фактическим удалением. Когда пользователь снова нажимает "удалить", он говорит "сделано", и пользователь должен снова нажать "ОК", чтобы приглашение исчезло навсегда.
SweetAlert имеет функцию таймера, поэтому вы можете автоматически закрывать последнее приглашение "Готово" через несколько секунд или около того, что прекрасно работает. У них также есть функция, где вы можете реализовать функцию, которая будет запускаться, когда пользователь нажимает "ОК" в приглашении "Готово". Проблема в том, что эта функция не запускается, если приглашение автоматически закрывается после завершения таймера.
Есть идеи, как это можно сделать?
Если таймер и функция не запущены:
swal({
title: "Deleted!",
text: "Your row has been deleted.",
type: "success",
timer: 3000
},
function () {
location.reload(true);
tr.hide();
});
Без таймера, но с рабочей функцией (при нажатии кнопки "ОК"):
swal("Deleted!", "Your row has been deleted.", "success"), function () {
location.reload();
tr.hide();
};
3 ответа
объяснение
Я думаю, что вы должны взять swal
кроме функции. Я имею в виду, что swal
отображается, функция запускается на заднем плане, и модальное окно автоматически закрывается.
Javascript / JQuery:
swal({
title: "Deleted!",
text: "Your row has been deleted.",
type: "success",
timer: 3000
});
function () {
location.reload(true);
tr.hide();
};
Ваш код на примере SweetAlert:
swal({
title: "Are you sure?",
text: "You will not be able to recover this imaginary file!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
cancelButtonText: "No, cancel plx!",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
swal({
title: "Deleted!",
text: "Your row has been deleted.",
type: "success",
timer: 3000
});
function () {
location.reload(true);
tr.hide();
};
}
else {
swal("Cancelled", "Your imaginary file is safe :)", "error");
}
});
Не можете просто использовать then
?
Этот способ намного чище.
swal({
title: 'Login Success',
text: 'Redirecting...',
icon: 'success',
timer: 2000,
buttons: false,
})
.then(() => {
dispatch(redirect('/'));
})
Я нашел решение.
В настоящее время я экспериментирую с использованием sweetAlert, и я нашел решение для вашего вопроса.
Это моя пользовательская функция для создания подсластителя, которая закроется через несколько секунд таймера.
var sweetAlert = function(title, message, status, timer = 5000, isReload = false){
swal({
title : title,
text : message + '<br/>This pop up will close automatically in <strong class="swal-timer-count">' + timer/1000 + '</strong> seconds...',
type : status,
html : true,
timer : timer,
allowEscapeKey : false
}, function () {
swal.close();
if(isReload)
location.reload(true);
});
var e = $(".sweet-alert").find(".swal-timer-count");
var n = +e.text();
setInterval(function(){
n > 1 && e.text (--n);
}, 1000);
}
Вы можете вызвать этот метод, используя этот код
Помните, таймер использует миллисекунды.
sweetAlert('Congratulation!', 'You successfully copy paste this code', 'success', 3000, false);
Решение здесь.
[https://sweetalert2.github.io/]
Видеть. Сообщение с таймером автоматического закрытия
let timerInterval
Swal.fire({
title: 'Auto close alert!',
html: 'I will close in <strong></strong> milliseconds.',
timer: 2000,
onBeforeOpen: () => {
Swal.showLoading()
timerInterval = setInterval(() => {
Swal.getContent().querySelector('strong')
.textContent = Swal.getTimerLeft()
}, 100)
},
onClose: () => {
clearInterval(timerInterval)
}
}).then((result) => {
if (
/* Read more about handling dismissals below */
result.dismiss === Swal.DismissReason.timer
) {
console.log('I was closed by the timer')
}
})
Мой код
swal.fire({ type: 'success', title: 'Saved.',
showConfirmButton: false, timer: 1500
}).then((result) => {
if (result.dismiss === Swal.DismissReason.timer) {
$("#new_reminder").modal("hide");
}
});
Эта проблема исправлена в новой версии Sweetalert 2
https://limonte.github.io/sweetalert2/
увидеть Плункер
.