PreventDefault SweetAlert2 - PullRequest
0 голосов
/ 13 ноября 2018

Я получил эту функцию, которая переопределяет мои нативные 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 Ответ

0 голосов
/ 13 ноября 2018

Разница в том, что 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');
});
...