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

DataTable集成bootstrap-confirmation时未确认即触发删除接口问题

解决DataTables ServerSide模式下删除确认弹窗与删除函数同时触发的问题

我一眼就看出问题所在了——你在删除链接里同时绑定了onclick事件和Bootstrap Confirmation的data-toggle="confirmation",点击时两个逻辑会同时触发,这就导致弹窗刚弹出来,删除请求已经发出去了。

要解决这个,我们需要让Confirmation插件来控制删除函数的执行时机,而不是直接用onclick硬绑定,具体修改步骤如下:

1. 移除删除链接的onclick属性,改用自定义属性存储ID

在createdRow生成删除链接的时候,把onclick="DelBenef(' + data.ID + ');"去掉,转而把ID存在元素的自定义data-id属性里,这样后续可以通过插件回调获取:

if (data.PeutSup) {
  $('td', row).eq(6).append('<a data-toggle="confirmation" data-id="' + data.ID + '" href="javascript:void(0);"><span class="glyphicon glyphicon-trash"></span></a>');
}

这里把href="#"改成href="javascript:void(0);",避免点击时页面锚点跳转的小问题

2. 给Confirmation插件添加确认回调函数

调整你的paramPopOverFileList配置,新增onConfirm回调,只有当用户点击确认按钮后,才调用删除接口:

// 假设你的原有paramPopOverFileList配置,新增onConfirm项
var paramPopOverFileList = {
  title: "确定要删除这条记录吗?", // 可以自定义提示语
  btnOkLabel: "确认删除",
  btnCancelLabel: "取消",
  onConfirm: function(event, element) {
    // 从自定义属性里取出ID
    var idBen = $(element).data('id');
    // 调用删除函数
    DelBenef(idBen);
  },
  onCancel: function() {
    // 取消时的逻辑,可选,比如清空状态提示
  }
};

3. 确保默认事件被阻止(可选但推荐)

在onConfirm回调里加上event.preventDefault(),彻底避免任何意外的默认行为触发:

onConfirm: function(event, element) {
  event.preventDefault();
  var idBen = $(element).data('id');
  DelBenef(idBen);
}

这样修改后,点击删除图标只会弹出确认弹窗,只有用户确认后才会执行删除接口调用,完美解决你的问题~

内容的提问来源于stack exchange,提问作者YannickIngenierie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:36:08