开发者问题收集

SweetAlert 2 - 表单提交(超出最大调用堆栈大小)

2017-08-16
1839

我遇到了 SweetAlert 2 的问题,我尝试在用户单击“确定”时提交表单。

代码如下(使用 jQuery)

$('#sa-params').click(function(e) {
      e.preventDefault();
      e.stopPropagation();
        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!',
            cancelButtonText: 'No, cancel!',
            confirmButtonClass: 'btn btn-success',
            cancelButtonClass: 'btn btn-danger',
            buttonsStyling: false
          }).then(function () {
            swal(
              'Deleted!',
              'It has been deleted, FOREVER!',
              'success'
            )
            $('form#delete-form').submit();
          }, function (dismiss) {
            if (dismiss === 'cancel') {
              swal(
                'Cancelled',
                'Relax, nothing has been deleted :)',
                'error'
              )
            }
          })
          return false;
    });

出现以下 JavaScript 错误:

Uncaught (in promise) RangeError: Maximum call stack size exceeded

最主要的是,如果我将表单提交替换为 console.log('success') ,则不会显示错误。

根据 bower.json:

jQuery 版本为:2.2.4

SweetAlert2 版本为:5.3.8

2个回答

$('form#delete-form')[0].submit();

解决了我的问题,我不知道为什么我没有尝试过...

Andrejs Gubars
2017-08-16

解决方案 在你的文件 sweetalert.js 中

注释掉:

$targetElement.focus(); 

或者在你的文件 sweetalert.min.js 中

b.focus()

可能在 413 行。

来源: https://github.com/t4t5/sweetalert/issues/104

Brayan Pastor
2019-01-16