我有一个简单的表单,试图使用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/

10-12 07:36