Как перенаправить страницу после щелчка на кнопке Ok на сладком оповещении?
Я могу показать сладкое предупреждение после обновления страницы, но я должен нажать кнопку "ОК", на которой я получаю сладкое предупреждение, чтобы перенаправить страницу. Пожалуйста, помогите мне в этом.
<?php
echo '<script type="text/javascript">';
echo 'setTimeout(function () { swal("WOW!","Message!","success");';
echo '}, 1000);'
echo 'window.location.href = "index.php";';
echo '</script>';
?>
Ответы
Ответ 1
Чтобы указать функцию обратного вызова, вы должны использовать объект в качестве первого аргумента, а функцию обратного вызова - как второй аргумент.
echo '<script>
setTimeout(function() {
swal({
title: "Wow!",
text: "Message!",
type: "success"
}, function() {
window.location = "redirectURL";
});
}, 1000);
</script>';
Ответ 2
Просто поставьте .then(
перед функцией. Нам не нужно использовать функции таймера. Например:
swal({
title: "Wow!",
text: "Message!",
type: "success"
}).then(function() {
window.location = "redirectURL";
});
Функция .then
используется для того, чтобы ждать, пока пользователь прочитает информацию модального окна, и решить, какое решение принять, нажав одну кнопку. Например, Yes
или No
.
После щелчка Swich Alert может перенаправить пользователя на другой экран, вызвать другое модальное окно Sweet Alert с новым и последующим вопросом, перейти на внешнюю ссылку и т.д.
Опять же, нам не нужно использовать таймер, потому что намного лучше контролировать действия пользователя. Пользователь может ждать вечность или действовать как щелчок пальца Таноса. 😜
С использованием .then
код становится короче, понятнее и элегантнее. ;)
Ответ 3
setTimeout(function () {
swal({
title: "Wow!",
text: "Message!",
type: "success",
confirmButtonText: "OK"
},
function(isConfirm){
if (isConfirm) {
window.location.href = "//stackoverflow.com";
}
}); }, 1000);
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert-dev.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.css">
Ответ 4
Я не смог сделать это с помощью любой функции swal (sweatAlert) по умолчанию, поэтому я принудительно использовал jquery, получив класс кнопки Ok, проверяющий элемент в chrome, сделал что-то вроде этого:
<script>
sweetAlert({
title:'Warning!',
text: 'Invalid user or password!',
type:'warning'
},function(isConfirm){
alert('ok');
});
$('.swal2-confirm').click(function(){
window.location.href = 'index.php';
});
</script>
Функция "Ok" в функции (isConfirm) была всего лишь испытанием, чтобы узнать, попадет ли она в эту функцию, если так я должен был перенаправить оттуда, но я не был...
Итак, я использовал jQuery, чтобы определить, была ли нажата кнопка "ОК" swal, получив ее класс: ".swal2-confirm", после чего я смог бы перенаправить с успехом...
Надеюсь, это поможет всем вам!
PS: Я использую php echo для запуска script, мне не нужно оставлять php для его запуска, просто используйте одинарные кавычки, и все готово!
Ответ 5
Самое лучшее и простое решение, мы можем добавить еще несколько событий!
swal({ title: "WOW!",
text: "Message!",
type: "success"}).then(okay => {
if (okay) {
window.location.href = "URL";
}
});
Ответ 6
Я думаю, это поможет. Это то же самое, что дал г-н Бармер. Но я вложил это в теги php.
Здесь он идет....
<?php if(!empty($_GET['submitted'])):?>
<script>
setTimeout(function() {
swal({
title: "Congratulaions!",
text: "Signed up successfully, now verify your mail",
type: "success",
confirmButtonText: "Ok"
}, function() {
window.location = "index.php";
}, 1000);
});
</script>
<?php endif;?>
Ответ 7
Ни один из вышеперечисленных решений не работал у меня, мне пришлось использовать .then
swal({
title: 'Success!',
text: message,
type: 'success',
confirmButtonText: 'OK'
}).then(() => {
console.log('triggered redirect here');
});
Ответ 8
function confirmDetete(ctl, event) {
debugger;
event.preventDefault();
var defaultAction = $(ctl).prop("href");
swal({
title: "Are you sure?",
text: "You will be able to add it back again!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
cancelButtonText: "Cancel",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
$.get(ctl);
swal({
title: "success",
text: "Deleted",
confirmButtonText: "ok",
allowOutsideClick: "true"
}, function () { window.location.href = ctl })
// $("#signupform").submit();
} else {
swal("Cancelled", "Is safe :)", "success");
}
});
}
Ответ 9
Существующие ответы не помогли мне, я просто использовал $('.confirm').hide()
. и это сработало для меня.
success: function(res) {
$('.confirm').hide()
swal("Deleted!", "Successfully deleted", "success")
setTimeout(function(){
window.location = res.redirect_url;
},700);
Ответ 10
Я сделал это с помощью этого кода:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.0/jquery.js"></script>
<script>
$(".confirm").on('click',function(){
window.location.href = "index.php";
});
</script>
Благодарю.
Ответ 11
setTimeout(function(){
Swal.fire({
title: '<span style="color:#fff">Kindly click the link below</span>',
width: 600,
showConfirmButton: true,
confirmButtonColor: '#ec008c',
confirmButtonText:'<span onclick="my2()">Register</span>',
padding: '3em',
timer: 10000,
background: '#fff url(bg.jpg)',
backdrop: '
rgba(0,0,123,0.4)
center left
no-repeat
'
})
}, 1500);
}
function my2() {
window.location.href = "https://www.url.com/";
}