You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SweetAlert2删除表单确认按钮无响应、.then回调不触发问题求助

问题诱因

  • 核心原因:AdminLTE默认集成的是V1版本的SweetAlert,而非你参考的SweetAlert2。V1版本的弹窗方法不返回Promise对象,完全不支持.then()链式调用语法,因此你写的回调逻辑永远不会触发,控制台也不会输出对应日志。
  • 附加问题:你提供的代码中没有显式引入SweetAlert2的CSS和JS资源,若你项目的app.js内也未打包SweetAlert2,运行时实际调用的就是旧版本SweetAlert,进一步加剧API不兼容问题。

解决方法

1. 引入正确的SweetAlert2资源,移除旧版冲突

先下载SweetAlert2的静态CSS和JS文件放到项目的公共资源目录,在Blade模板对应的位置引入,同时排查项目中是否有旧版SweetAlert的引用,存在的话直接删除:

<!-- 添加到 @section('css') 区域 -->
<link rel="stylesheet" href="/css/sweetalert2.min.css">

<!-- 添加到 @section('adminlte_js') 区域,可放在app.js引入之后 -->
<script src="/js/sweetalert2.all.min.js"></script>

2. 调整表单提交逻辑避免重复触发

原代码中确认后调用的this.submit()是jQuery封装的提交方法,会再次触发你绑定的submit事件,导致二次弹出确认框,需要改为调用原生表单的提交方法:

$('.delete-form').submit(function(e){
    e.preventDefault();
    const nativeForm = this; // 保存原生表单对象
    let nombreElemento =  e.target.parentElement.parentElement.children[1].innerText;
    Swal.fire({
        title: `¿Estás seguro de borrar ${nombreElemento}?`,
        text: 'Recuerda que esta acción es irreversible',
        icon: 'warning',
        showCancelButton: true,
        confirmButtonColor: '#50f8ac',
        cancelButtonColor: '#d33',
        focusCancel: true,
        confirmButtonText: 'Ok, Bórralo',
        cancelButtonText: 'Cancelar'
    }).then((result) => {
        console.log('Inside.. ');
        if (result.isConfirmed) {
            nativeForm.submit(); // 原生提交不会触发绑定的submit事件
        } else {
            console.log('No confirmed!! ');
        }
    });
});

3. 排查资源加载情况

如果修改后仍不生效,打开浏览器开发者工具的「网络」面板,搜索sweetalert相关的加载资源,确认仅加载了SweetAlert2的资源,没有旧版本SweetAlert的资源同时加载,两个版本共存会导致API调用冲突。

内容的提问来源于stack exchange,提问作者Fernando López

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 13:15:08