2015-04-29 2 views
4

Я играл немного с плагином SweetAlert: Sweet alertСладкий таймер оповещения - сделано функция

Я хотел сделать кнопку удаления, когда пользователь получает побудила до фактического удаления. Когда пользователь снова нажимает «удалить», он говорит «сделано», и пользователь должен снова нажать «ОК», чтобы подсказка ушла навсегда.

SweetAlert имеет функцию таймера, поэтому вы можете автоматически закрыть это последнее сообщение «Готово» через несколько секунд или около того, что отлично работает. У них также есть функция, в которой вы можете реализовать функцию, которая будет запускаться, когда пользователь нажимает «ОК» в приглашении «Готово». Проблема в том, что функция не запускается, если автоматическое закрытие запроса после завершения таймера.

Любые идеи, как это можно сделать?

С таймером и функцией не запущенной:

swal({ 
    title: "Deleted!", 
    text: "Your row has been deleted.", 
    type: "success", 
    timer: 3000 
    }, 
    function() { 
      location.reload(true); 
      tr.hide(); 
    }); 

без таймера, но с рабочей функцией (по нажатию кнопки «ОК»):

swal("Deleted!", "Your row has been deleted.", "success"), function() { 
         location.reload(); 
         tr.hide(); 
        }; 

ответ

7

Объяснение

Я думаю, вы должны принять swal помимо функции. Я имею в виду, что отображается swal, функция работает на фоне, и модальный автоматически закрывается.

Javascript/JQuery:

swal({ 
    title: "Deleted!", 
    text: "Your row has been deleted.", 
    type: "success", 
    timer: 3000 
    }); 
    function() { 
     location.reload(true); 
     tr.hide(); 
    }; 

Ваш код с примером SweetAlert:

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"); 
     } 
    }); 
+0

Это не правильно ... – iamchriswick

1

Я нашел решение.

В настоящее время я экспериментирую с использованием sweetAlert, и я нашел решение для вашего вопроса.
Это моя специальная функция для создания sweetalert, которая будет закрываться через несколько секунд таймера.

var sweetAlert = function(title, message, status, timer = 5000, isReload = false){ 
    swal({ 
     title : title, 
     text : message + '<br/>This pop up will close automatically in <strong class="swal-timer-count">' + timer/1000 + '</strong> seconds...', 
     type : status, 
     html : true, 
     timer : timer, 
     allowEscapeKey : false 
    }, function() { 
     swal.close(); 
     if(isReload) 
      location.reload(true); 
    }); 
    var e = $(".sweet-alert").find(".swal-timer-count"); 
    var n = +e.text(); 
    setInterval(function(){ 
     n > 1 && e.text (--n); 
    }, 1000); 
} 

Вы можете вызвать этот метод, используя этот код
Помните, что таймер использует milisecond.

sweetAlert('Congratulation!', 'You successfully copy paste this code', 'success', 3000, false); 
+0

Nice !!!! Я смотрел это часами, и вы получили это просто так просто! Большое спасибо!! – Evis