PreventDefault SweetAlert2

Я получил эту функцию, которая переопределяет мои родные оповещения js:

function alert(message, title = 'Test', type = 'info')
{
    // event.preventDefault();
    if(typeof(swal) != 'undefined') {
        swal({
            html: message,
            title: title,
            type: type,
            width: '24rem',
        }).then((result) => {
            return result.value;
        });
    }
    else {
        alert(message);
    }
}

В конце моих функций PHP у меня появляется предупреждение ("успех"), а затем я перенаправляю на другую страницу. С собственным предупреждением JS, я жду, чтобы нажать кнопку OK, чтобы продолжить. Теперь с этой функцией swal, она показывает предупреждение и мгновенно перенаправляет. Есть ли способ избежать такого поведения и действовать как собственное предупреждение, не меняя сигнатуру функции?

1 ответ

Разница в том, что alert() модально. Это означает, что он блокирует все остальные входы и выходы до тех пор, пока не будет отклонен. Подсластитель нет.

Вы можете заставить его вести себя аналогичным образом, используя функцию обратного вызова, которую вы выполняете при нажатии кнопки ОК в Sweetalert. Вы можете сделать это, передав функцию alert()затем вызывая его в then() блок, вот так:

function alert(message, title = 'Test', type = 'info', callback) {
  if (typeof(swal) != 'undefined') {
    swal({
      html: message,
      title: title,
      type: type,
      width: '24rem',
    }).then(() => {
      callback && callback();
    });
  } else {
    alert(message);
    callback && callback();            
  }
}

// example usage:
alert('foo bar', 'title', 'info', function() {
  window.location.assign('somewhere_else.php');
});
Другие вопросы по тегам