Sweetalert confirm separat

Buna!
Nu vreau sa scriu de fiecare data acel cod lung pentru confirm-ul respectiv, de aceea am preferat sa fac o functie care sa-mi apeleze un sweetalert si sa-mi returneze true sau false in functie de butonul pe care dau click. Ideea e ca functia de callback a lui swal nu poate face returnul respectiv. Ce as putea sa fac ?

function sweetConfirmDelete (url, id, token) {
	swal({
		title: "Sunteti sigur?",
		text: 'Doriti sa stergeti inregistrarea ?',
		type: "warning",
		showCancelButton: true,
		confirmButtonColor: '#DD6B55',
		confirmButtonText: 'Da, sunt sigur!',
		cancelButtonText: 'Anuleaza!!',
		closeOnConfirm: true,
		closeOnCancel: false
	},
	function(isConfirm){
		if (isConfirm){
		return '123';
			swal("Modificare!", "Stergerea a avut loc cu succes!", "success");
		}else{
			return '321';
			swal("Modificare!", "Stergerea a fost anulata!", "error");
		}
	}
	);
	
}

Ca sa intelegeti, acest lucru este similar urmatorul: sa presupunem ca vrem sa apelam un ajax intr-o functie custom, si dorim sa returnam true din callback-ul cu success:

function removeAjax (url_in, id, token) {
for (var i = 0; i < arguments.length; i++) {
	console.log(arguments[i]);
}
$.ajax({
    type: "POST",
    url : url_in,
    data: { 'remove_id': id, _token: token },
    success : function(data){
    	return true;
        $('tr[data-id='+id+']').fadeOut();
        location.reload();
        toastr.info(data); 
    },
    error: function(jqXHR, textStatus, errorThrown) {
	  console.log(textStatus, errorThrown);
	}
});

}

E posibil cu promisiuni … E o chestie noua acum in javascript! Nu prea ma pricep la javascript… ai putea incerca cu un switch(isConfirm) {}

1 Like

Trebuie să citești puțin despre callbackuri, async functions, promises în Javascript.

O rezolvare ușoară la problema ta este următoarea:
(aceasta este o rezolvare cu callbacks, se poate și în alte moduri)

function sweetConfirmDelete (successCallback, errorCallback) {
    swal({
        title: "Sunteti sigur?",
        text: 'Doriti sa stergeti inregistrarea ?',
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: '#DD6B55',
        confirmButtonText: 'Da, sunt sigur!',
        cancelButtonText: 'Anuleaza!!',
        closeOnConfirm: false,
        closeOnCancel: false
    },
    function(confirmed) {
        if(confirmed && typeof successCallback === "function") {
            successCallback();
        }else if(!confirmed && typeof errorCallback === "function") {
            errorCallback();
        }
    });
}

și apelezi funcția ta așa:

sweetConfirmDelete(function() {
    console.log("A apasat pe CONFIRM!");
});

sweetConfirmDelete(function() {
    swal("Success!");
}, function() {
    swal("Ohh :( cancel. :( ");
});


sweetConfirmDelete(function() {
    //aici faci ce vrei tu cand apasa pe confirm
}, function() {
    //aici faci ce vrei tu cand apasa pe cancel
});

sweetConfirmDelete(function() {
    //aici faci ce vrei sa faca daca a apasat pe confirm, 
    //fara sa setezi si cazul cand apasa pe cancel
});
2 Likes