使用甜蜜警报防止表单提交默认
Prevent default on form submit with sweet alert
我想在提交带有 SweetAlert 2 确认框的表单之前添加最终检查。
表单按钮是类型提交,我现在已经阻止了默认但它不会从确认框中提交:
更新
$('#btn-submit').on('click', function(e){
e.preventDefault();
swal({
title: "Are you sure?",
text: "You will not be able to recover this lorem ipsum!", type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
closeOnConfirm: false
},
function(){
$("#form-loader").submit();
});
})
我现在面临的问题是,删除按钮只是关闭了alert,没有提交就恢复到之前的画面
<form method="POST" action="#" accept-charset="UTF-8" id="form-loader"><input name="_method" type="hidden" value="DELETE">
<input name="_token" type="hidden" value="Yl8jdQ8dzxPmbxMcdF7coS9bSxXsChXU2g1YHEq0">
<input class="delete-confirm" id="btn-submit" type="submit" value="Delete">
</form>
您忘记将 event
参数传递给回调:
$('.delete-confirm').on('click', (event) => {
// ^^^^^
The form button is type submit, I am at a stage where I have prevented the default but it will not submit from the confirmation box:
根据SweetAlert2 documentation可以测试用户是否点击了确认按钮:
.then((result) => {
if (result.value) { // if confirm clicked....
$('.delete-confirm').closest('form').submit(); // submit form
}
})
$('.delete-confirm').on('click', (event) => {
event.preventDefault()
swal({
title: 'Confirm',
text: 'Are you sure to delete this instance?',
type: 'warning',
showCancelButton: true,
confirmButtonText: 'Delete',
cancelButtonText: 'Cancel'
}).then((result) => {
if (result.value) {
$('.delete-confirm').closest('form').submit();
}
});
});
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://unpkg.com/sweetalert2@7.1.3/dist/sweetalert2.all.js"></script>
<form>
<table>
<tr>
<th>Company</th>
<th>Contact</th>
<th></th>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td><input type="submit" class="delete-confirm" value="delete?"></td>
</tr>
<tr>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td><input type="submit" class="delete-confirm" value="delete?"></td>
</tr>
<tr>
<td>Ernst Handel</td>
<td>Roland Mendel</td>
<td><input type="submit" class="delete-confirm" value="delete?"></td>
</tr>
</table>
</form>
我想在提交带有 SweetAlert 2 确认框的表单之前添加最终检查。
表单按钮是类型提交,我现在已经阻止了默认但它不会从确认框中提交:
更新
$('#btn-submit').on('click', function(e){
e.preventDefault();
swal({
title: "Are you sure?",
text: "You will not be able to recover this lorem ipsum!", type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
closeOnConfirm: false
},
function(){
$("#form-loader").submit();
});
})
我现在面临的问题是,删除按钮只是关闭了alert,没有提交就恢复到之前的画面
<form method="POST" action="#" accept-charset="UTF-8" id="form-loader"><input name="_method" type="hidden" value="DELETE">
<input name="_token" type="hidden" value="Yl8jdQ8dzxPmbxMcdF7coS9bSxXsChXU2g1YHEq0">
<input class="delete-confirm" id="btn-submit" type="submit" value="Delete">
</form>
您忘记将 event
参数传递给回调:
$('.delete-confirm').on('click', (event) => {
// ^^^^^
The form button is type submit, I am at a stage where I have prevented the default but it will not submit from the confirmation box:
根据SweetAlert2 documentation可以测试用户是否点击了确认按钮:
.then((result) => {
if (result.value) { // if confirm clicked....
$('.delete-confirm').closest('form').submit(); // submit form
}
})
$('.delete-confirm').on('click', (event) => {
event.preventDefault()
swal({
title: 'Confirm',
text: 'Are you sure to delete this instance?',
type: 'warning',
showCancelButton: true,
confirmButtonText: 'Delete',
cancelButtonText: 'Cancel'
}).then((result) => {
if (result.value) {
$('.delete-confirm').closest('form').submit();
}
});
});
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://unpkg.com/sweetalert2@7.1.3/dist/sweetalert2.all.js"></script>
<form>
<table>
<tr>
<th>Company</th>
<th>Contact</th>
<th></th>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td><input type="submit" class="delete-confirm" value="delete?"></td>
</tr>
<tr>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td><input type="submit" class="delete-confirm" value="delete?"></td>
</tr>
<tr>
<td>Ernst Handel</td>
<td>Roland Mendel</td>
<td><input type="submit" class="delete-confirm" value="delete?"></td>
</tr>
</table>
</form>