Bootstrap 4 - модальная сверх модальная ловушка фокуса потеряна - PullRequest
0 голосов
/ 13 марта 2019

Bootstrap 4: при открытии первого модала фокус становится ловушкой внутри (вы можете перемещать фокус с помощью клавиши табуляции, и вы никогда не будете фокусировать элемент вне модала).Когда вы открываете второй модал, фокус становится ловушкой внутри, и вы снова не можете сфокусироваться на внешнем элементе (это правильно).Когда вы закрываете второй модал, фокус возвращается к первому модалу (это правильно), но проблема в том, что если вы переместите фокус с помощью клавиши табуляции, то фокус исчезнет (после последнего фокусируемого элемента modal1) из первого модалапоэтому он больше не попадает в ловушку в первом модале.Есть ли какое-то решение для решения проблемы с начальной загрузкой 4?

вы можете проверить это в jsfiddle (браузер Firefox):
https://jsfiddle.net/4cnmvf13/1/

html5:

<!-- Modal2 -->
<div class="modal fade" id="exampleModal2" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel2">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        2
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>



<!-- Modal1 -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        1
        <!-- Button trigger modal2 -->
      <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal2">
        Launch demo modal
      </button>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>


<!-- Button trigger modal1 -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
  Launch demo modal
</button>

css:

#exampleModal2 {
  z-index: 200000;
}

1 Ответ

0 голосов
/ 13 марта 2019

Bootstrap не обрабатывает сценарии такого рода, кажется, вы можете обработать событие, как показано ниже, чтобы получить требуемый индекс табуляции в модели

$('#exampleModal2').on('show.bs.modal', function () {
  $('#exampleModal').modal("hide");
})

$('#exampleModal2').on('hide.bs.modal', function () {
  $('#exampleModal').modal("show");
})
#exampleModal2 {
  z-index: 1600;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>



<div class="modal fade" id="exampleModal2" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel2">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        2
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>



<!-- Modal1 -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        1
        <!-- Button trigger modal2 -->
      <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal2">
        Launch demo modal
      </button>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>


<!-- Button trigger modal1 -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
  Launch demo modal
</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...