Запуск функции после ответа на sweet alert 2

Я застрял на этом в течение нескольких дней. Я использую sweetalert2, и то, что я пытаюсь выполнить, — это вызвать функцию javascript, основанную на данном ответе, поэтому, если я нажимаю OK, она запускает одну вещь, а если я нажимаю отмена, она делает что-то еще. I can sorta get it to work but it appears to trigger the function before sweet alert complets. Вот пример кода :

<script>
    function validateSubmit(a,b,c){
        var mode = a;
        var info = b;
        var trunk = c;

        var iteration = baseName(info);

        if (mode === 'Update' && info != trunk ){
            confirmGetMessage(iteration);
        }
        else {
            alert('seems to work')
        }
    }

    function baseName(str) {
        var base = new String(str).substring(str.lastIndexOf('/') + 1); 
        if(base.lastIndexOf(".") != -1)       
        base = base.substring(0, base.lastIndexOf("."));
        return base;
    }

    function trythis(){
        alert('made it right here!');
    }

    function confirmGetMessage(info){
        var message = "<h3>" + info + "</h3><br/>Or Revert Back to Trunk?";             var contmessage = "Updating " + info;

        swal({
            title: "Update Branch?",
            html: message,
            type: "question",
            showCancelButton: true,
            cancelButtonText: "Switch To Trunk",
            cancelButtonColor: "#0080FF",
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "Continue Update",
            closeOnConfirm: false,
            closeOnCancel: false
        }).then(
            function(result){
                swal({
                    text: contmessage,
                    timer: 1400,
                    showConfirmButton: false
                }), alert('work please');
            }, function(dismiss) {
                swal({
                    text: 'Switching to Trunk',
                    timer: 1400,
                    showConfirmButton: false
                });
            }
        );
    }
</script>

Таким образом, если вы запустите этот код, окно предупреждения появится над полем сообщения от sweetalert.

———- Обновление —————

Запуск кода, как так, кажется, становится ближе, хотя теперь предупреждение сообщение по-прежнему происходит до закрытия сообщения, но, по крайней мере, на этот раз я могу увидеть закрытие сообщение

    function validateSubmit(a,b,c){
            var mode = a;
            var info = b;
            var trunk = c;

            var iteration = baseName(info);

            if (mode === 'Update' && info != trunk ){
                confirmGetMessage(iteration);
            }
            else {
                alert('seems to work')
            }
        }

        function baseName(str) {
            var base = new String(str).substring(str.lastIndexOf('/') + 1); 
            if(base.lastIndexOf(".") != -1)       
            base = base.substring(0, base.lastIndexOf("."));
            return base;
        }

        function trythis(){
            alert('made it right here!');
        }

        function confirmGetMessage(info){
            var message = "<h3>" + info + "</h3><br/>Or Revert Back to Trunk?";
            var contmessage = "Updating " + info;

            swal({
                title: "Update Branch?",
                html: message,
                type: "question",
                showCancelButton: true,
                cancelButtonText: "Switch To Trunk",
                cancelButtonColor: "#0080FF",
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "Continue Update",
                closeOnConfirm: false,
                closeOnCancel: false
            }).then(function(){
                swal({
                    text: contmessage,
                    timer: 1400,
                    showConfirmButton: false
                },trythis())
            }, function(dismiss){
                if (dismiss === 'cancel'){
                    swal({
                        text: 'Switching to Trunk',
                        timer: 1400,
                        showConfirmButton: false
                    })
                }
            }
        )}

1 ответ

  1. Вы считываете значение в resultпервом вызове функции после создания предупреждения, но не проверяете значение вызова.
    Из функции Sweet alert timer-done,

    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({
              title: "Deleted!",
              text: "Your row has been deleted.",
              type: "success",
              timer: 3000
           });
           function () {
              location.reload(true);
              tr.hide();
           };
        }
        else {
            swal("Cancelled", "Your imaginary file is safe :)", "error");
        }
    });
    

    Вам нужно проверить, был ли вход подтвержден или нет. Что-то вроде этого, вероятно, то, что вы хотите, но у меня нет среды, чтобы проверить его с:

    swal({
            title: "Update Branch?",
            html: message,
            type: "question",
            showCancelButton: true,
            cancelButtonText: "Switch To Trunk",
            cancelButtonColor: "#0080FF",
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "Continue Update",
            closeOnConfirm: false,
            closeOnCancel: false
        },
        function(result){
            if(result)
            {
                swal({
                    text: contmessage,
                    timer: 1400,
                    showConfirmButton: false
                }), alert('work please');
            },      
            else{
                swal({
                    text: 'Switching to Trunk',
                    timer: 1400,
                    showConfirmButton: false
                });
            }
        }
    );