我有一个简单的表单,试图使用SweetAlert2让用户在提交和处理表单之前确认其提交。
我正在使用下面的代码中断提交流程,但是无论用户是否按下取消点击的方式,表单都将提交。有人知道我在做什么错吗?
<script>
$(document).on('click', '#note_submit', function(e) {
e.preventDefault();
swal({
title: "Are you sure?",
text: "Once deleted, you will not be able to recover this imaginary file!",
buttons: true,
dangerMode: true,
icon: "warning",
input: 'checkbox',
inputValue: 0,
showCancelButton: true,
inputPlaceholder: ' I agree with the Terms',
confirmButtonText: 'Continue',
inputValidator: function (result) {
return new Promise(function (resolve, reject) {
if (result) {
resolve();
} else {
reject('You need to agree with the Terms');
}
})
}
}).then(function (result) {
$('#notes_form').submit();
});
});
</script>
最佳答案
因为您提到了inputValidator
参数,所以我相信您使用的是SweetAlert2,而不是SweetAlert。
我的另一个猜测是,您最近将SweetAlert2更新为最新版本,并且没有检查具有重大更改的发行说明:https://github.com/sweetalert2/sweetalert2/releases/tag/v7.0.0
从v7.0.0开始,SweetAlert2将始终履行诺言,并且要检查对话框是否已提交或取消,您需要检查result.value
:
swal({
...
}).then((result) => {
if (result.value) {
// A dialog has been submitted
} else {
// A dialog has benn cancelled
// For more information about handling dismissals please visit
// https://sweetalert2.github.io/#handling-dismissals
}
})
关于javascript - SweetAlert2取消按钮仍在提交表单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48822354/