删除前的 Sweet Alert 确认
Sweet Alert confirmation before delete
您好,我刚开始使用 sweet alert js 来让我的警报框更漂亮。我正在使用正常的 javascript 警报确认删除我 table 中的特定数据。但是,当我尝试 运行 在删除之前进行甜蜜的警报确认时,它会在不弹出确认的情况下删除文件。
下面是我的 JS 中的代码。
<script>
archiveFunction() {
swal({
title: "Are you sure?",
text: "But you will still be able to retrieve this file.",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, archive it!",
cancelButtonText: "No, cancel please!",
closeOnConfirm: false,
closeOnCancel: false
},
function(isConfirm){
if (isConfirm) {
swal("Deleted!", "Your imaginary file has been archived.", "success");
} else {
swal("Cancelled", "Your imaginary file is safe :)", "error");
}
});
}
</script>
下面是我的 html 表格。
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<input type="hidden" name="p_id" id="p_id" value="<?php echo $rows['p_id']; ?>">
<button class="btn btn-danger" type="submit" name="archive" onclick="archiveFunction()">
<i class="fa fa-archive"></i>
Archive
</button>
</form>
这里是 php 中的代码。
<?php
include('../config.php');
if(isset($_POST['archive']))
{
$p_id = $_REQUEST['p_id'];
// sql to delete a record
$sqli = "UPDATE students SET archive = 2 WHERE p_id=$p_id";
if ($conn->query($sqli) === TRUE) {
echo "swal('Archived!', 'Click ok to see!', 'success')";
} else {
echo "Error Archiving record: " . $conn->error;
}
$conn->close();
}
?>
我想要发生的是在删除特定数据之前确认甜蜜警报确认。
删除 <form>
并替换:
<button class="btn btn-danger" type="submit">
至:
<button class="btn btn-danger ajax_delete" type="button">
从 "ajax_delete" 到
调用 onclick 函数
$(".ajax_delete").on("click", function (){ /*your sweet alert code and after ajax call function */});
之后将您的删除代码放入 ajax 调用文件。
发生这种情况是因为您没有通过相应地使用 event.preventDefault()
或 return
和 false
或 true
来阻止浏览器的默认行为。
function [...](e) {
e.preventDefault();
[...]
}
改变,
<button class="btn btn-danger" type="submit" name="archive" onclick="archiveFunction()">
到,
<button class="btn btn-danger" type="submit" name="archive" onclick="archiveFunction(event)">
为内联事件侦听器传递事件参数。
或者 如果不需要 form
那么您可以删除 form
标签。
正如其他人提到的,您的按钮点击是将表单提交给指定的操作,您无法在警报中选择您的选项。因此,您应该使用 event.preventDefault()
并仅在用户按是时才提交表单来阻止表单提交。
function archiveFunction() {
event.preventDefault(); // prevent form submit
var form = event.target.form; // storing the form
swal({
title: "Are you sure?",
text: "But you will still be able to retrieve this file.",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, archive it!",
cancelButtonText: "No, cancel please!",
closeOnConfirm: false,
closeOnCancel: false
},
function(isConfirm){
if (isConfirm) {
form.submit(); // submitting the form when user press yes
} else {
swal("Cancelled", "Your imaginary file is safe :)", "error");
}
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css">
<form action="abc" method="POST">
<input type="hidden" name="p_id" id="p_id" value="<?php echo $rows['p_id']; ?>">
<button class="btn btn-danger" name="archive" type="submit" onclick="archiveFunction()">
<i class="fa fa-archive"></i>
Archive
</button>
</form>
此删除确认码在 express js 中带有甜蜜提醒
我的代码:
function validateForm() {
event.preventDefault(); // prevent form submit
var form = document.forms["myForm"]; // storing the form
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) {
form.submit();
} else {
swal("Your imaginary file is safe!");
}
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css">
<form name="myForm" method="POST" action="/delete">
<input type="hidden" value="<%= alldata[i]._id %>" name="std_id">
<input type="submit" onclick="validateForm()" class="btn btn-danger btn-xs" value="DELETE">
</form>
function archiveFunction() {
event.preventDefault(); // prevent form submit
var form = event.target.form; // storing the form
swal({
title: "Are you sure?",
text: "But you will still be able to retrieve this file.",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, archive it!",
cancelButtonText: "No, cancel please!",
closeOnConfirm: false,
closeOnCancel: false
},
function(isConfirm){
if (isConfirm) {
form.submit(); // submitting the form when user press yes
} else {
swal("Cancelled", "Your imaginary file is safe :)", "error");
}
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css">
<form action="abc" method="POST">
<input type="hidden" name="p_id" id="p_id" value="<?php echo $rows['p_id']; ?>">
<button class="btn btn-danger" name="archive" type="submit" onclick="archiveFunction()">
<i class="fa fa-archive"></i>
Archive
</button>
</form>
您好,我刚开始使用 sweet alert js 来让我的警报框更漂亮。我正在使用正常的 javascript 警报确认删除我 table 中的特定数据。但是,当我尝试 运行 在删除之前进行甜蜜的警报确认时,它会在不弹出确认的情况下删除文件。
下面是我的 JS 中的代码。
<script>
archiveFunction() {
swal({
title: "Are you sure?",
text: "But you will still be able to retrieve this file.",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, archive it!",
cancelButtonText: "No, cancel please!",
closeOnConfirm: false,
closeOnCancel: false
},
function(isConfirm){
if (isConfirm) {
swal("Deleted!", "Your imaginary file has been archived.", "success");
} else {
swal("Cancelled", "Your imaginary file is safe :)", "error");
}
});
}
</script>
下面是我的 html 表格。
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<input type="hidden" name="p_id" id="p_id" value="<?php echo $rows['p_id']; ?>">
<button class="btn btn-danger" type="submit" name="archive" onclick="archiveFunction()">
<i class="fa fa-archive"></i>
Archive
</button>
</form>
这里是 php 中的代码。
<?php
include('../config.php');
if(isset($_POST['archive']))
{
$p_id = $_REQUEST['p_id'];
// sql to delete a record
$sqli = "UPDATE students SET archive = 2 WHERE p_id=$p_id";
if ($conn->query($sqli) === TRUE) {
echo "swal('Archived!', 'Click ok to see!', 'success')";
} else {
echo "Error Archiving record: " . $conn->error;
}
$conn->close();
}
?>
我想要发生的是在删除特定数据之前确认甜蜜警报确认。
删除 <form>
并替换:
<button class="btn btn-danger" type="submit">
至:
<button class="btn btn-danger ajax_delete" type="button">
从 "ajax_delete" 到
调用 onclick 函数$(".ajax_delete").on("click", function (){ /*your sweet alert code and after ajax call function */});
之后将您的删除代码放入 ajax 调用文件。
发生这种情况是因为您没有通过相应地使用 event.preventDefault()
或 return
和 false
或 true
来阻止浏览器的默认行为。
function [...](e) {
e.preventDefault();
[...]
}
改变,
<button class="btn btn-danger" type="submit" name="archive" onclick="archiveFunction()">
到,
<button class="btn btn-danger" type="submit" name="archive" onclick="archiveFunction(event)">
为内联事件侦听器传递事件参数。
或者 如果不需要 form
那么您可以删除 form
标签。
正如其他人提到的,您的按钮点击是将表单提交给指定的操作,您无法在警报中选择您的选项。因此,您应该使用 event.preventDefault()
并仅在用户按是时才提交表单来阻止表单提交。
function archiveFunction() {
event.preventDefault(); // prevent form submit
var form = event.target.form; // storing the form
swal({
title: "Are you sure?",
text: "But you will still be able to retrieve this file.",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, archive it!",
cancelButtonText: "No, cancel please!",
closeOnConfirm: false,
closeOnCancel: false
},
function(isConfirm){
if (isConfirm) {
form.submit(); // submitting the form when user press yes
} else {
swal("Cancelled", "Your imaginary file is safe :)", "error");
}
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css">
<form action="abc" method="POST">
<input type="hidden" name="p_id" id="p_id" value="<?php echo $rows['p_id']; ?>">
<button class="btn btn-danger" name="archive" type="submit" onclick="archiveFunction()">
<i class="fa fa-archive"></i>
Archive
</button>
</form>
此删除确认码在 express js 中带有甜蜜提醒
我的代码:
function validateForm() {
event.preventDefault(); // prevent form submit
var form = document.forms["myForm"]; // storing the form
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) {
form.submit();
} else {
swal("Your imaginary file is safe!");
}
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css">
<form name="myForm" method="POST" action="/delete">
<input type="hidden" value="<%= alldata[i]._id %>" name="std_id">
<input type="submit" onclick="validateForm()" class="btn btn-danger btn-xs" value="DELETE">
</form>
function archiveFunction() {
event.preventDefault(); // prevent form submit
var form = event.target.form; // storing the form
swal({
title: "Are you sure?",
text: "But you will still be able to retrieve this file.",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, archive it!",
cancelButtonText: "No, cancel please!",
closeOnConfirm: false,
closeOnCancel: false
},
function(isConfirm){
if (isConfirm) {
form.submit(); // submitting the form when user press yes
} else {
swal("Cancelled", "Your imaginary file is safe :)", "error");
}
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css">
<form action="abc" method="POST">
<input type="hidden" name="p_id" id="p_id" value="<?php echo $rows['p_id']; ?>">
<button class="btn btn-danger" name="archive" type="submit" onclick="archiveFunction()">
<i class="fa fa-archive"></i>
Archive
</button>
</form>