Как использовать «сладкое оповещение» для подтверждения удаления изображения для dropify.js? - PullRequest
0 голосов
/ 07 июня 2018

Я хочу использовать сладкое предупреждение перед удалением изображения.Но это не работает.Это работает, если я использую подтверждение по умолчанию JavaScript.Я пытался использовать async и ждать, но это не помогло.Как я могу это исправить / отладить?

var pathURL = "file_path/";
var dropifyElements = {};
$('.dropify').each(function() {
    dropifyElements[this.id] = true;
});
var drEvent = $('.dropify').dropify();

drEvent.on('dropify.beforeClear', function(event, element) {
    id = event.target.id;
    if(dropifyElements[id]) {
        var x = false;
        return swal({   
            title: "Are you sure?",   
            text: "You will not be able undo this operation!",   
            type: "warning",   
            showCancelButton: true,   
            confirmButtonColor: "#DD6B55",   
            confirmButtonText: "Yes, delete it!",   
            cancelButtonText: "No, cancel please!",   
            closeOnConfirm: false,   
            closeOnCancel: false 
        }, function(isConfirm){   
            if (isConfirm) {
                x = true;
            } else {     
                swal({
                    title:"Cancelled",
                    text:"Delete Cancelled :)",
                    type:"error",
                    timer: 2000,
                });
                x = true;
            } 
        });
        return x;
        //return confirm("Do you really want to delete this image?");
        // return confirm("Do you really want to delete \"" + element.file.name + "\" ?");
    }
});

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Я читаю ответ и у меня не работает, но я пишу другую идею

var dropifyElements = {};
$('.dropify').each(function () {
    dropifyElements[this.id] = false;
});

dropElements.on('dropify.beforeClear', function (event, element) {
    id = event.target.id;
    if (!dropifyElements[id]) {
        swal({
            title: "¿Estás seguro?",
            text: "¿Realmente deseas eliminar el archivo \"" + element.file.name + "\" ?",
            icon: "warning",
            buttons: {
                cancel: "Cancelar",
                acept: "Aceptar"
            },
            dangerMode: true
        }).then((action) => {
            if (action == "acept") {
                dropifyElements[id] = true;
                element.clearElement();
            }
        });
        return false;
    }
    else
    {
        dropifyElements[id] = false;
        return true;
    }
});
0 голосов
/ 07 июня 2018

Хорошо, элемент input пропущен через обработчик событий, поэтому, если пользователь действительно хочет удалить его, все, что вам нужно сделать, это вернуть false в обработчик по умолчанию, затем если пользователь нажимает кнопку подтверждения на экземпляре swal, вы просто обнуляете значение элемента input.У меня нет вашего кода, но это должно сработать.

var pathURL = "file_path/";
var dropifyElements = {};
$('.dropify').each(function() {
    dropifyElements[this.id] = true;
});
var drEvent = $('.dropify').dropify();

drEvent.on('dropify.beforeClear', function(event, element) {
    id = event.target.id;
    if(dropifyElements[id]) {

        swal({   
            title: "Are you sure?",   
            text: "You will not be able undo this operation!",   
            type: "warning",   
            showCancelButton: true,   
            confirmButtonColor: "#DD6B55",   
            confirmButtonText: "Yes, delete it!",   
            cancelButtonText: "No, cancel please!",   
            closeOnConfirm: false,   
            closeOnCancel: false 
        }, isConfirm => {   
            if (isConfirm) {
                element.value = "";
            } else {     
                swal({
                    title:"Cancelled",
                    text:"Delete Cancelled :)",
                    type:"error",
                    timer: 2000,
                });
            } 
        });

        return false;

    }
});
...