Я хочу показать модальное всплывающее окно, прежде чем покинуть страницу - PullRequest
0 голосов
/ 29 августа 2018
<a href="https://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_modal&stacked=h" id="leave">click here to leave the page</a>


<div id="myModal" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Modal Header</h4>
      </div>
      <div class="modal-body">
        <p>Changes made may not be saved.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>

  </div>
</div>

$("#leave").click(function() {
  $(window).bind('beforeunload', function() {
    return 'Changes you made may not be Saved';
  });
});

вот js fiddle, на котором я работаю

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вы можете запретить поведение ссылки leave по умолчанию, отобразить диалоговое окно и использовать тайм-аут, чтобы перенаправить страницу через несколько секунд.

Пример:

$("#leave").click(function(e) {
  e.preventDefault();
  var link = this.href;
  //code to show dialog
  window.setTimeout(function() {    
    window.location.href = link;
  }, 2000);
});

Кроме того, вам необходимо заключить коды сценариев в тег script html.

0 голосов
/ 29 августа 2018

Почему вы не можете настроить логику перенаправления внутри модальной кнопки и позволить элементу a отобразить модальный режим. Это кажется более простым решением.

$("#leave").click(e => {
    e.preventDefault()
    $("#myModal").modal({
        show: true
    })
})
$("#procceedLeaveBtn").click(() => {
    window.location.href = "https://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_modal&stacked=h"
})
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<a href="#" id="leave">click here to leave the page</a>

<div id="myModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Modal Header</h4>
            </div>
            <div class="modal-body">
                <p>Changes made may not be saved.</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <button id="procceedLeaveBtn" type="button" class="btn btn-default" data-dismiss="modal">Procceed</button>
            </div>
        </div>

    </div>
</div>
Вы даже можете указать атрибут data-href внутри элемента кнопки и извлечь его из обработчика щелчка. Это зависит от вас.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...