Sweetalert: Cómo manejar la acción del botón cancelar

Creado en 25 ene. 2017  ·  7Comentarios  ·  Fuente: t4t5/sweetalert

Tenemos un parámetro de devolución de llamada para el botón de confirmación, pero ¿cómo podemos usar una devolución de llamada para el botón de cancelación?

Comentario más útil

Puede encontrar un ejemplo de cómo hacer esto en la documentación: http://t4t5.github.io/sweetalert/

"... y al pasar un parámetro, puede ejecutar algo más para 'Cancelar'".

swal({
  title: "Are you sure?",
  text: "You will not be able to recover this imaginary file!",
  type: "warning",
  showCancelButton: true,
  confirmButtonColor: "#DD6B55",
  confirmButtonText: "Yes, delete it!",
  cancelButtonText: "No, cancel plx!",
  closeOnConfirm: false,
  closeOnCancel: false
},
function(isConfirm){
  if (isConfirm) {
    swal("Deleted!", "Your imaginary file has been deleted.", "success");
  } else {
    swal("Cancelled", "Your imaginary file is safe :)", "error");
  }
});

Todos 7 comentarios

Veo en el código que hay un parámetro doneFunction .

Estoy probando este código pero parece que mi devolución de llamada se ignora por completo, ¿qué estoy haciendo mal?

(new Promise((resolve, reject) => {
  swal({
    title: "Delete data?",
    text: "Deleted data will be lost.",
    type: "warning",
    showCancelButton: true,
    confirmButtonColor: "#DD6B55",
    confirmButtonText: "Delete",
    closeOnConfirm: false,
    html: false,
    doneFunction(res) {
      if (res) {
        resolve();
      } else {
        reject();
      }
    }
  });
})).then(() => console.log("Resolved"), () => console.log("Rejected"))

Lo mismo para mí. Mi función de devolución de llamada se llama cuando se hace clic en el botón Aceptar, pero no para el botón Cancelar.

@jeffmath Cambié a https://github.com/limonte/sweetalert2 para resolver eso

Puede encontrar un ejemplo de cómo hacer esto en la documentación: http://t4t5.github.io/sweetalert/

"... y al pasar un parámetro, puede ejecutar algo más para 'Cancelar'".

swal({
  title: "Are you sure?",
  text: "You will not be able to recover this imaginary file!",
  type: "warning",
  showCancelButton: true,
  confirmButtonColor: "#DD6B55",
  confirmButtonText: "Yes, delete it!",
  cancelButtonText: "No, cancel plx!",
  closeOnConfirm: false,
  closeOnCancel: false
},
function(isConfirm){
  if (isConfirm) {
    swal("Deleted!", "Your imaginary file has been deleted.", "success");
  } else {
    swal("Cancelled", "Your imaginary file is safe :)", "error");
  }
});

@ t4t5 A través de isConfirm, podemos verificar si la respuesta del usuario fue el botón Confirmar u otra cosa. Pero, ¿podría decirme cómo verificar si el botón en el que se hizo clic fue un botón "Confirmar" o un botón "Cancelar" o un botón "Cerrar" porque estoy usando el botón Cancelar también para redirigir a otro lugar, pero el botón Cerrar simplemente cierra la alerta?

El problema real es que en sweetalert v1.x, el controlador de cancelación está verificando que la devolución de llamada comience con function( https://github.com/t4t5/sweetalert/blob/v1.1.3/lib/modules/handle- click.js # L119.
Entonces, si esa condición no se cumple, como el ejemplo de @Zorgatone está usando doneFunction( la devolución de llamada simplemente se ignorará.

Buen partido @gualopezb. He tenido esto funcionando desde siempre y de repente dejó de funcionar.

Le fix:

-    }, (code) => {
+    }, function(code) {

Supongo que está en juego algún cambio en mi configuración de Babel.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

vmitchell85 picture vmitchell85  ·  6Comentarios

sastrahost picture sastrahost  ·  5Comentarios

krishnamraju picture krishnamraju  ·  3Comentarios

girishbr picture girishbr  ·  5Comentarios

rapeflower picture rapeflower  ·  4Comentarios