Выход OnClientClick не работает с Sweetalert

Sweeetalert не работает, как окно подтверждения, он не ждет функции обратного вызова

Когда я нажимаю на выход, он выходит из системы, не дожидаясь сладкого оповещения, да, нет подтверждения

<asp:Button runat="server" ID="btnUserlogout" Text="Logout" 
                               OnClick="btnUserlogout_Click"
                               OnClientClick="return UserDeleteConfirmation();"  />


function UserDeleteConfirmation() {
           return  swal({
            title: "Are you sure to Logout? ",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: '#DD6B55',
            confirmButtonText: 'Yes, I am sure!',
            cancelButtonText: "No, cancel it!",
            closeOnConfirm: false,
            closeOnCancel: false
        });
}

Также я пробовал с этим кодом

function UserlogoutConfirmation() {
        // return confirm("Are you sure you want to logout?");
       return  swal({
            title: "Are you sure to submit Project? ",
            text: " Once submitted, You will not be able to make any change!",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: '#DD6B55',
            confirmButtonText: 'Yes, I am sure!',
            cancelButtonText: "No, cancel it!",
            closeOnConfirm: false,
            closeOnCancel: false
       }, function (con) {
           if (con) {
               return true
           } else {
               return false
           }
       });

    }

person Parshuram Kalvikatte    schedule 16.02.2018    source источник


Ответы (1)


Вам нужно использовать обещание. Sweet Alert возвращает обещание, на которое вы можете отреагировать. см. этот пример из официальной документации Sweet Alert на Github (https://github.com/t4t5/sweetalert)

swal({
  title: "Are you sure?",
  text: "Are you sure that you want to leave this page?",
  icon: "warning",
  dangerMode: true,
})
.then(willDelete => {
  if (willDelete) {
    swal("Deleted!", "Your imaginary file has been deleted!", "success");
  }
});

в качестве альтернативы вы можете использовать async. это также объясняется в документации на Github.

Чтобы вернуться к своему коду, если вы вернете функцию swal, вы можете просто проверить, подтвердил ли пользователь следующее:

function UserDeleteConfirmation() {
           return  swal({
            title: "Are you sure to Logout? ",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: '#DD6B55',
            confirmButtonText: 'Yes, I am sure!',
            cancelButtonText: "No, cancel it!",
            closeOnConfirm: false,
            closeOnCancel: false
        });
}

UserDeleteConfirmation().then((isClicked) => {
    //isClicked is true if the button is clicked
}
person T Beck    schedule 16.02.2018