Sweet Alert确认框 - 获取用户响应

3

我有一个JS文件,其中有一个如下的函数:

function eliminarProducto(id){
  var url = '../php/apartado/elimina_producto.php';
  var pregunta = confirm('Are you sure to delete this user?');

浏览器中显示的消息看起来很简单,我想用 Sweet Alert 消息来改变它…但是我不知道怎么做! ;(

if(pregunta==true){
  $.ajax({
    type:'POST',
    url:url,
    data:'id='+id,
    success: function(registro){
      $('#agrega-registros').html(registro);
      return false;
    }
  });
  return false;
}else{
  return false;
}

*********************** 编辑后的帖子 ****************************** 新代码

function eliminarProducto(id){
  var url = '../php/apartado/elimina_producto.php';

  swal({
    title: '¡Atención!',
    text: "¿Desea eliminar el registro?",
    type: 'warning',
    showCancelButton: true,
    confirmButtonText: 'Aceptar'
  }).then(function(){
    $.ajax({
      type:'POST',
      url:url,
      data:'id='+id,
      success: function(registro){
        $('#agrega-registros').html(registro);
      }
    });
  })
}

如果我选择取消选项,我该如何中断操作?:)

有点奇怪...你说知道如何通过PHP实例化swal(),然后似乎又问如何将平凡的confirm()替换为swal()。所以...嘿?哈哈...你能启发我一下吗? - Louys Patrice Bessette
好的,让我们来看看第一个使用sweet alert的PHP代码,我写它只是作为参考,因为我已经知道如何做或者它是如何工作的。 但是在JS文件中使用函数时,我不知道如何像第一个那样使用sweet alert来制作消息,所以我使用了“confirm”,但看起来很简单。:/ 我正在寻找将jquery confirm转换为sweet-alert确认的方法,基本上就是这样。 - Diego
好的,他们改变了文档...这让我很难找到我想要的东西。但是看这里:https://sweetalert.js.org/docs/#buttons - Louys Patrice Bessette
1
谢谢,我会检查的。 :) 我要尝试一些东西。 - Diego
好的...那么请更新您的问题,如果仍有问题,请尝试。并删除不相关的PHP代码。; ) 请检查[控制台](http://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console-in-different-browsers)是否有任何错误。 - Louys Patrice Bessette
显示剩余3条评论
1个回答

2
假设您已经有一个名为“swal”的工具。
我如何处理“确认”决策是:
.catch(swal.noop).then(function(result){...});

那个“catch”指令主要是用来捕获背景点击或关闭模态框的。我认为它代表“无操作”,但我不确定。它还可以捕获其他“确定”或“取消”按钮的事件并将其终止。
因此,如果你实际上从这两个按钮中得到了一个“结果”,那么“then”子句将适用。因此,result 是一个反映用户选择的布尔值,可以是true或false。
你的代码应该是:
function eliminarProducto(id){
  var url = '../php/apartado/elimina_producto.php';

  swal({
    title: '¡Atención!',
    text: "¿Desea eliminar el registro?",
    type: 'warning',
    showCancelButton: true,
    confirmButtonText: 'Aceptar'
  }).catch(swal.noop).then(function(result){  // Change here.
    if(result){                               // If "yes" from user.
      $.ajax({
        type:'POST',
        url:url,
        data:'id='+id,
        success: function(registro){
          $('#agrega-registros').html(registro);
        }
      });
    }
  })
}

1
noop代表无操作。:) 在机器语言中非常常见。 - mustachioed
@MustacheMoses:OP讲西班牙语,而我是法语母语者。所以...由于Swal文档中noop没有很好的定义(新文档看起来更可爱但是啊!真是令人头疼),我认为这个问题/答案是相关的...并且将会对很多人有帮助。;) - Louys Patrice Bessette
我理解你的沮丧感。感谢你提供如此出色的答案。 - mustachioed
@MustacheMoses:这里没有挫败感...只是对文档的欺骗感到失望...因为我已经习惯了一段时间,因为我经常使用这个插件。现在它看起来更加新颖和可爱,但是(乍一看)更难找到信息。 - Louys Patrice Bessette
1
谢谢,它起作用了。 :) 因此,我使用了另一个选项:swal({title: '你确定吗?', showCancelButton: true}).then(result => { if (result.value) { // 处理确认按钮点击 // result.value 将包含 true 或输入值 } else { // 处理取消 // result.dismiss 可以是 'cancel'、'overlay'、'esc' 或 'timer' } })祝您有愉快的一天,感谢您的时间。 - Diego

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接