带有 href 的 Sweet Alert 删除确认
Sweet Alert Delete Confirmation with a href
我正在使用 PHP,并使用 Sweet alert 进行删除确认。问题是它在显示甜蜜警报之前正在删除。
这是我的 HTML(其中使用了 PHP)。
<div class="delete"><a onclick="return confirmation()" href="'.URLROOT.'/dashboards/delete_note/'.htmlspecialchars($note->note_id).'/'.$data['table'] .'"><i class="far fa-trash-alt"></i></a></div>
这是我的甜蜜提醒
function confirmation() {
swal({
title: "Are you sure?",
text: "Once deleted, you will not be able to recover this imaginary file!",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((willDelete) => {
if (willDelete) {
swal("Poof! Your imaginary file has been deleted!", {
icon: "success",
});
} else {
swal("Your imaginary file is safe!");
}
});
}
问题是,它没有显示甜蜜警报,它只是直接进入 URL。我是否需要做一个表格并防止提交或类似的东西?
问题是单击锚元素有默认行为。您可以使用 event.preventDefault()
来防止重定向并根据您的逻辑使用 window.location.href='url'
手动导航
<div class="delete"><a onclick="confirmation(event)" href="'.URLROOT.'/dashboards/delete_note/'.htmlspecialchars($note->note_id).'/'.$data['table'] .'"><i class="far fa-trash-alt"></i></a></div>
在 js 中
function confirmation(ev) {
ev.preventDefault();
var urlToRedirect = ev.currentTarget.getAttribute('href'); //use currentTarget because the click may be on the nested i tag and not a tag causing the href to be empty
console.log(urlToRedirect); // verify if this is the right URL
swal({
title: "Are you sure?",
text: "Once deleted, you will not be able to recover this imaginary file!",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((willDelete) => {
// redirect with javascript here as per your logic after showing the alert using the urlToRedirect value
if (willDelete) {
swal("Poof! Your imaginary file has been deleted!", {
icon: "success",
});
} else {
swal("Your imaginary file is safe!");
}
});
}
尝试从 link 中删除 href 并仅在用户在 SweetAlert 脚本中单击确认时处理 link。
<div class="delete"><a onclick="return confirmation()"><i class="far fa-trash-alt"></i></a></div>
在你的javascript中:
function confirmation() {
swal({
title: "Are you sure?",
text: "Once deleted, you will not be able to recover this imaginary file!",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((willDelete) => {
if (willDelete) {
// TODO: Handle your delete url by ajax
// ...
swal("Poof! Your imaginary file has been deleted!", {
icon: "success",
});
} else {
swal("Your imaginary file is safe!");
}
});
你可以在 href 属性中添加值 javascript:
,像这样
<a href = 'javascript:
swal({
title: "Delete selected item?",
text: "Unrecoverable Data",
icon: "warning",
buttons: true,
dangerMode: "true",
})
.then((willDelete) => {
if (willDelete) {
swal({ title: "Delete Data Successfully",
icon: "success"}).then(okay => {
if (okay) {
window.location.href = "";
}
});
} else {
swal({
title: "Data Not Deleted",
icon: "error",
});
}
});'
class = "btn btn-danger">Delete</a>
我正在使用 PHP,并使用 Sweet alert 进行删除确认。问题是它在显示甜蜜警报之前正在删除。
这是我的 HTML(其中使用了 PHP)。
<div class="delete"><a onclick="return confirmation()" href="'.URLROOT.'/dashboards/delete_note/'.htmlspecialchars($note->note_id).'/'.$data['table'] .'"><i class="far fa-trash-alt"></i></a></div>
这是我的甜蜜提醒
function confirmation() {
swal({
title: "Are you sure?",
text: "Once deleted, you will not be able to recover this imaginary file!",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((willDelete) => {
if (willDelete) {
swal("Poof! Your imaginary file has been deleted!", {
icon: "success",
});
} else {
swal("Your imaginary file is safe!");
}
});
}
问题是,它没有显示甜蜜警报,它只是直接进入 URL。我是否需要做一个表格并防止提交或类似的东西?
问题是单击锚元素有默认行为。您可以使用 event.preventDefault()
来防止重定向并根据您的逻辑使用 window.location.href='url'
<div class="delete"><a onclick="confirmation(event)" href="'.URLROOT.'/dashboards/delete_note/'.htmlspecialchars($note->note_id).'/'.$data['table'] .'"><i class="far fa-trash-alt"></i></a></div>
在 js 中
function confirmation(ev) {
ev.preventDefault();
var urlToRedirect = ev.currentTarget.getAttribute('href'); //use currentTarget because the click may be on the nested i tag and not a tag causing the href to be empty
console.log(urlToRedirect); // verify if this is the right URL
swal({
title: "Are you sure?",
text: "Once deleted, you will not be able to recover this imaginary file!",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((willDelete) => {
// redirect with javascript here as per your logic after showing the alert using the urlToRedirect value
if (willDelete) {
swal("Poof! Your imaginary file has been deleted!", {
icon: "success",
});
} else {
swal("Your imaginary file is safe!");
}
});
}
尝试从 link 中删除 href 并仅在用户在 SweetAlert 脚本中单击确认时处理 link。
<div class="delete"><a onclick="return confirmation()"><i class="far fa-trash-alt"></i></a></div>
在你的javascript中:
function confirmation() {
swal({
title: "Are you sure?",
text: "Once deleted, you will not be able to recover this imaginary file!",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((willDelete) => {
if (willDelete) {
// TODO: Handle your delete url by ajax
// ...
swal("Poof! Your imaginary file has been deleted!", {
icon: "success",
});
} else {
swal("Your imaginary file is safe!");
}
});
你可以在 href 属性中添加值 javascript:
,像这样
<a href = 'javascript:
swal({
title: "Delete selected item?",
text: "Unrecoverable Data",
icon: "warning",
buttons: true,
dangerMode: "true",
})
.then((willDelete) => {
if (willDelete) {
swal({ title: "Delete Data Successfully",
icon: "success"}).then(okay => {
if (okay) {
window.location.href = "";
}
});
} else {
swal({
title: "Data Not Deleted",
icon: "error",
});
}
});'
class = "btn btn-danger">Delete</a>