Arhn - архитектура программирования

Оповещение JS подтверждает, что ссылка на кнопку не работает

У меня возникла проблема при использовании подтверждения JS. когда я нажимаю на кнопку, подтверждение подтверждения не появляется, а сразу перенаправляет на ссылку. Следующая кнопка ссылки на скрипт и предупреждение подтверждают сценарий.

function CheckDelete(){
alertify.confirm("This is a confirm dialog.",
  function(){
    alertify.success('Ok');
  },
  function(){
    alertify.error('Cancel');
  });}

<a href="http://google.com"><button type="button" class="btn btn-danger" onClick="return CheckDelete();"><i class="fa fa-remove"></i> Delete</button></a>

зарегистрируйтесь: https://jsfiddle.net/r2fs0p45/

Предположительно, когда я нажал кнопку, должно появиться диалоговое окно подтверждения, а затем перейти по ссылке. но согласно моему коду выше, когда я нажимаю кнопку, она напрямую перенаправляется на ссылку, поэтому диалоговое окно подтверждения не появляется. Кто-нибудь знает, как это побороть?


  • Можете ли вы создать скрипку того же самого? Не получается протестировать... 16.02.2016
  • Почему button в теге <a>? Он вызовет оба действия. Нажмите, а также redirection 16.02.2016
  • Вы ищете этот jsfiddle.net/rayon_1990/6zNaP/89? 16.02.2016
  • так что решение друг? 16.02.2016

Ответы:


1

CheckDelete() необходимо вернуть false, чтобы предотвратить действие по умолчанию

function CheckDelete(){
    alertify.confirm("This is a confirm dialog.",
        function(){
            alertify.success('Ok');
        },
        function(){
            alertify.error('Cancel');
    });
    return false;
}
16.02.2016
  • Это работает, но после того, как я нажимаю ОК, не переходите по ссылке. как перейти по ссылке после нажатия ОК? 16.02.2016
  • @RayonDabre разобрался с этим в своем ответе. window.location.href 16.02.2016

  • 2

    Не используйте тег button в a в вашей разметке.

    Чтобы перейти к пользователю, при обратном вызове кнопки OK используйте window.location.href для перенаправления пользователя.

    Попробуй это:

    function CheckDelete() {
      alertify.confirm("This is a confirm dialog.",
        function(input) {
          if (input) {
            alertify.success('Ok');
            window.location.href = 'http://google.com';
          } else {
            alertify.error('Cancel');
          }
        });
    }
    .alertify,
    .alertify-show,
    .alertify-log {
      -webkit-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
      -moz-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
      -ms-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
      -o-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
      transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
      /* easeOutBack */
    }
    .alertify-hide {
      -webkit-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
      -moz-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
      -ms-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
      -o-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
      transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
      /* easeInBack */
    }
    .alertify-log-hide {
      -webkit-transition: all 500ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
      -moz-transition: all 500ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
      -ms-transition: all 500ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
      -o-transition: all 500ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
      transition: all 500ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
      /* easeInBack */
    }
    .alertify-cover {
      position: fixed;
      z-index: 99999;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      background-color: #f5f5f5;
      opacity: 0.5;
    }
    .alertify-cover-hidden {
      display: none;
    }
    .alertify {
      position: fixed;
      z-index: 99999;
      top: 150px;
      left: 50%;
      width: 400px;
      margin-left: -215px;
      opacity: 1;
    }
    .alertify-hidden {
      -webkit-transform: translate(0, -150px);
      -moz-transform: translate(0, -150px);
      -ms-transform: translate(0, -150px);
      -o-transform: translate(0, -150px);
      transform: translate(0, -150px);
      opacity: 0;
      display: none;
    }
    /* overwrite display: none; for everything except IE6-8 */
    
    :root *> .alertify-hidden {
      display: block;
    }
    .alertify-logs {
      position: fixed;
      z-index: 5000;
      bottom: 10px;
      right: 10px;
      width: 300px;
    }
    .alertify-logs-hidden {
      display: none;
    }
    .alertify-log {
      display: block;
      margin-top: 10px;
      position: relative;
      right: -300px;
      opacity: 0;
    }
    .alertify-log-show {
      right: 0;
      opacity: 1;
    }
    .alertify-log-hide {
      -webkit-transform: translate(300px, 0);
      -moz-transform: translate(300px, 0);
      -ms-transform: translate(300px, 0);
      -o-transform: translate(300px, 0);
      transform: translate(300px, 0);
      opacity: 0;
    }
    .alertify-dialog {
      padding: 25px;
    }
    .alertify-resetFocus {
      border: 0;
      clip: rect(0 0 0 0);
      height: 1px;
      margin: -1px;
      overflow: hidden;
      padding: 0;
      position: absolute;
      width: 1px;
    }
    .alertify-inner {
      text-align: center;
    }
    .alertify-text {
      margin-bottom: 15px;
      width: 100%;
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
      font-size: 100%;
    }
    .alertify-buttons {} .alertify-button,
    .alertify-button:hover,
    .alertify-button:active,
    .alertify-button:visited {
      background: none;
      text-decoration: none;
      border: none;
      /* line-height and font-size for input button */
      line-height: 1.5;
      font-size: 100%;
      display: inline-block;
      cursor: pointer;
      margin-left: 5px;
    }
    .alertify-isHidden {
      display: none;
    }
    @media only screen and (max-width: 680px) {
      .alertify,
      .alertify-logs {
        width: 90%;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
      }
      .alertify {
        left: 5%;
        margin: 0;
      }
    }
    /**
     * Twitter Bootstrap Look and Feel
     * Based on http://twitter.github.com/bootstrap/
     */
    
    .alertify,
    .alertify-log {
      font-family: sans-serif;
    }
    .alertify {
      background: #FFF;
      border: 1px solid #8E8E8E;
      /* browsers that don't support rgba */
      border: 1px solid rgba(0, 0, 0, .3);
      border-radius: 6px;
      box-shadow: 0 3px 7px rgba(0, 0, 0, .3);
      -webkit-background-clip: padding;
      /* Safari 4? Chrome 6? */
      -moz-background-clip: padding;
      /* Firefox 3.6 */
      background-clip: padding-box;
      /* Firefox 4, Safari 5, Opera 10, IE 9 */
    }
    .alertify-dialog {
      padding: 0;
    }
    .alertify-inner {
      text-align: left;
    }
    .alertify-message {
      padding: 15px;
      margin: 0;
      color: Black;
    }
    .alertify-text-wrapper {
      padding: 0 15px;
    }
    .alertify-text {
      color: #555;
      border-radius: 4px;
      padding: 8px;
      background-color: #FFF;
      border: 1px solid #CCC;
      box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
    }
    .alertify-text:focus {
      border-color: rgba(82, 168, 236, .8);
      outline: 0;
      box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(82, 168, 236, .6);
    }
    .alertify-buttons {
      padding: 8px 15px 8px;
      background: #F5F5F5;
      border-top: 1px solid #DDD;
      border-radius: 0 0 6px 6px;
      box-shadow: inset 0 1px 0 #FFF;
      text-align: right;
    }
    .alertify-button,
    .alertify-button:hover,
    .alertify-button:focus,
    .alertify-button:active {
      margin-left: 10px;
      border-radius: 4px;
      font-weight: normal;
      padding: 4px 12px;
      text-decoration: none;
      box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
      background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, .3), rgba(255, 255, 255, 0));
      background-image: -moz-linear-gradient(top, rgba(255, 255, 255, .3), rgba(255, 255, 255, 0));
      background-image: -ms-linear-gradient(top, rgba(255, 255, 255, .3), rgba(255, 255, 255, 0));
      background-image: -o-linear-gradient(top, rgba(255, 255, 255, .3), rgba(255, 255, 255, 0));
      background-image: linear-gradient(top, rgba(255, 255, 255, .3), rgba(255, 255, 255, 0));
    }
    .alertify-button:focus {
      outline: none;
      box-shadow: 0 0 5px #2B72D5;
    }
    .alertify-button:active {
      position: relative;
      box-shadow: inset 0 2px 4px rgba(0, 0, 0, .15), 0 1px 2px rgba(0, 0, 0, .05);
    }
    .alertify-button-cancel,
    .alertify-button-cancel:hover,
    .alertify-button-cancel:focus,
    .alertify-button-cancel:active {
      text-shadow: 0 -1px 0 rgba(255, 255, 255, .75);
      background-color: #E6E6E6;
      border: 1px solid #BBB;
      color: #333;
      background-image: -webkit-linear-gradient(top, #FFF, #E6E6E6);
      background-image: -moz-linear-gradient(top, #FFF, #E6E6E6);
      background-image: -ms-linear-gradient(top, #FFF, #E6E6E6);
      background-image: -o-linear-gradient(top, #FFF, #E6E6E6);
      background-image: linear-gradient(top, #FFF, #E6E6E6);
    }
    .alertify-button-cancel:hover,
    .alertify-button-cancel:focus,
    .alertify-button-cancel:active {
      background: #E6E6E6;
    }
    .alertify-button-ok,
    .alertify-button-ok:hover,
    .alertify-button-ok:focus,
    .alertify-button-ok:active {
      text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
      background-color: #04C;
      border: 1px solid #04C;
      border-color: #04C #04C #002A80;
      border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
      color: #FFF;
    }
    .alertify-button-ok:hover,
    .alertify-button-ok:focus,
    .alertify-button-ok:active {
      background: #04C;
    }
    .alertify-log {
      background: #D9EDF7;
      padding: 8px 14px;
      border-radius: 4px;
      color: #3A8ABF;
      text-shadow: 0 1px 0 rgba(255, 255, 255, .5);
      border: 1px solid #BCE8F1;
    }
    .alertify-log-error {
      color: #B94A48;
      background: #F2DEDE;
      border: 1px solid #EED3D7;
    }
    .alertify-log-success {
      color: #468847;
      background: #DFF0D8;
      border: 1px solid #D6E9C6;
    }
    <script src="http://fabien-d.github.io/alertify.js/assets/js/lib/alertify/alertify.min.js"></script>
    <button type="button" class="btn btn-danger" onClick="CheckDelete();"><i class="fa fa-remove"></i> Delete</button>

    16.02.2016
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..