如何在使用jQuery阻止它后继续提交表单?
例如:
删除input
元素:
<form action="/articles/{{ $article->id }}" method="POST">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<input class="btn btn-danger btn-sm need-alert" type="submit" value="delete">
</form>
我希望在提交表单之前为用户提供sweetalert2
提醒。
Javascript code:
<script>
$('.need-alert').on('click', function (event) {
event.preventDefault();
//sweetalert2 code
swal({
title: 'Are you sure?',
text: "You won't be able to revert this!",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, delete it!'
}).then(function () {
//...
}).catch(swal.noop);
})
</script>
sweetalert2
警告框可以正确显示。
问题:
点击sweetalert2提醒框的确认按钮后如何继续提交表单?
答案 0 :(得分:0)
您可以使用jQuery's submit function执行此操作。
<form id="deleteForm" action="/articles/{{ $article->id }}" method="POST">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<input class="btn btn-danger btn-sm need-alert" type="submit" value="delete">
</form>
<script>
$('.need-alert').on('click', function (event) {
event.preventDefault();
//sweetalert2 code
swal({
title: 'Are you sure?',
text: "You won't be able to revert this!",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, delete it!'
}).then(function () {
$('#deleteForm').submit();
}).catch(swal.noop);
})
</script>
处理提交事件更好,而不是点击删除按钮。如果用户使用键盘导航到按钮,则确认不会显示。您可以通过执行以下操作来解决此问题:
$(document).ready(function () {
var form = $("#deleteForm");
// keep track of the swall popup answer.
var isConfirmed = false;
form.submit(function (event) {
// If answered "ok" previously continue submitting the form.
if (isConfirmed) {
return true;
}
// Confirm is not ok yet so prevent the form from submitting and show the message.
event.preventDefault();
//sweetalert2 code
swal({
title: 'Are you sure?',
text: "You won't be able to revert this!",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, delete it!'
}).then(function (confirmed) {
isConfirmed = confirmed;
form.submit();
}).catch(swal.noop);
});
});
&#13;
<link href="https://cdn.jsdelivr.net/sweetalert2/4.0.5/sweetalert2.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/sweetalert2/4.0.10/sweetalert2.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="deleteForm" action="/articles/{{ $article->id }}" method="POST">
<!-- {{ method_field('DELETE') }}
{{ csrf_field() }} -->
<input class="btn btn-danger btn-sm need-alert" type="submit" value="delete">
</form>
&#13;