Как закрыть модальное окно twitter bootstrap (после первоначального запуска)


91

Я в большой степени новичок, поэтому я думаю, что наблюдаю за чем-то (вероятно, очевидным) с помощью модального режима загрузки twitter. Я пытаюсь запустить модальное окно только на мобильных устройствах. Это отлично работает с добавлением класса .visible-phone в модальный div. Все идет нормально. Но потом я хочу, чтобы он работал, то есть вы можете закрыть его кнопкой X. И я не могу заставить работать кнопку.

<div class="modal visible-phone" id="myModal">
  <div class="modal-header">
    <button class="close" data-dismiss="modal">×</button>
    <h3>text introductory<br>want to navigate to...</h3>
 </div>
 <div class="modal-body">
    <ul class="nav">
      <li> ... list of links here </li>
    </ul>
   </div>
  </div>

Внизу html я помещаю jquery.js (первый), bootstrap.modal.js и bootstrap.transition.js. Фактически все модули bootstrap js (чтобы не пропустить включение). Я не разбираюсь в js ..

Пожалуйста, простите меня, если я задал действительно глупый вопрос. Я не смог найти ответ на эту конкретную ситуацию в журнале.

Ответы:


219

$('#myModal').modal('hide') должен сделать это


да, это работает. Но у меня нет такой же анимации, как у нас с 'data-dismiss = "modal"'?
— Крис

хорошо, моя ошибка. На самом деле я не помню проблему, которая у меня была в то время, сейчас я использую это, и он отлично работает. ТЫ!
— Крис

Узнайте больше здесь .. stackoverflow.com/questions/10944302/…
— Санджай Кумар

6
Это странно, $('#myModal').modal('show')у меня работает, а у hide - нет.
— Charlotte

3
@LittleBigBot попробуйте использовать $('#myModal').modal('toggle');вместо этого
— Эдсон Горацио Джуниор

27

У меня возникли проблемы с закрытием модального диалога начальной загрузки, если он был открыт с помощью:

$('#myModal').modal('show');

Я решил эту проблему, открыв диалог по следующей ссылке:

<a href="#myModal" data-toggle="modal">Open my dialog</a>

Не забываем инициализацию:

$('#myModal').modal({show: false});

Я также использовал следующие атрибуты для кнопки закрытия:

data-dismiss="modal" data-target="#myModal"

Привет, artjom. Спасибо! Буду запускать и давать отзывы. Вы не используете кнопку à для открытия модального окна? Как это то, чего я пытаюсь достичь. Изначально иметь модальный запуск и только на мобильных устройствах, чтобы предлагать меню быстрой навигации к местоположению (не актуально непосредственно на настольных компьютерах), вот в чем идея.
— Моник Де Хаас

Да, data-dismiss = "modal" data-target = "# myModal" решил мою проблему! оцените!
— Dheeraj Thedijje

13

Добавьте класс hide в модальный

<!-- Modal Demo -->
<div class="modal hide" id ="myModal" aria-hidden="true" >

Код Javascript

 <!-- Use this to hide the modal necessary for loading and closing the modal-->
 <script>
     $(function(){
         $('#closeModal').click(function(){
              $('#myModal').modal('hide');
          });
      });
 </script>

 <!-- Use this to load the modal necessary for loading and closing the modal-->
 <script>
     $(function () {
         $('#myModal').modal('show');
     });
  </script>

13

.modal ('hide') вручную скрывает модальное окно . Используйте следующий код, чтобы закрыть модель начальной загрузки

$('#myModal').modal('hide');

Взгляните на рабочий код здесь

Или

Попробуйте здесь


6

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

<button class="close" data-dismiss="modal" data-target="#myModal">×</button>

Кроме того, вам понадобится только bootstrap.modal.js, чтобы вы могли безопасно удалить остальные.

Изменить: если это не сработает, удалите класс видимого телефона и протестируйте его в браузере своего ПК, а не на телефоне. Это покажет, получаете ли вы ошибки javascript или, например, это проблема совместимости.

Изменить: демонстрационный код

<html>
<head>
    <title>Test</title>
    <link href="/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script src="/Scripts/bootstrap.modal.js" type="text/javascript"></script>

    <script type="text/javascript">
      $(document).ready(function () {
        if( navigator.userAgent.match(/Android/i)
            || navigator.userAgent.match(/webOS/i)
            || navigator.userAgent.match(/iPhone/i)
            || navigator.userAgent.match(/iPad/i)
            || navigator.userAgent.match(/iPod/i)
            || navigator.userAgent.match(/BlackBerry/i)
          ) {
          $("#myModal").modal("show");
        }

        $("#myModalClose").click(function () {
          $("#myModal").modal("hide");
        });
      });
    </script>
</head>
<body>
    <div class="modal hide" id="myModal">
      <div class="modal-header">
        <a class="close" id="myModalClose">×</a>
        <h3>text introductory<br>want to navigate to...</h3>
     </div>
     <div class="modal-body">
        <ul class="nav">
          <li> ... list of links here </li>
        </ul>
   </div>
  </div>
</body>
</html>

Привет, @Simon Cunningham. Миллион за ответ! Я поставил цель данных. Не получилось (к сожалению) Потом удалил класс visible-phone. Не имело значения. code <div class = "modal visible-phone" id = "myModal"> <div class = "modal-header"> <button class = "close" data-dismiss = "modal" data-target = "# myModal"> × </button> <h3> вводный текст <br> хотите перейти к ... </h3> </div> <div class = "modal-body"> <ul class = "nav"> <li> .. . список ссылок здесь </li> <li> link2 </li> <li> link3 </li> </ul> </div> </div>code

<div class="modal visible-phone" id="myModal"> <div class="modal-header"> <button class="close" data-dismiss="modal" data-target="#myModal">×</button> <h3>text introductory<br>want to navigate to...</h3> </div> <div class="modal-body"> <ul class="nav"> <li> ... list of links here </li> <li> link2 </li> <li> link3 </li> </ul> </div> </div>
— Моник Де Хаас

Простите за беспорядок в тексте;) Я последовал вашему совету. Кажется логичным дать кнопке закрытия точный целевой объект данных. Но почему-то у меня все еще не получается. Даже если отключить видимый телефон. На кнопку закрытия вроде не влияет. (что неплохо)
— Моник Де Хаас

Как вы изначально открываете модальное окно? Попробуйте открыть его, как показано ниже - <a data-toggle="modal" href="#myModal" class="btn"> Открыть модальное окно </a>
— Саймон Каннингем

Я добавил урезанный демонстрационный код к своему исходному ответу. Файлы javascript и css являются локальными для моего тестового проекта, просто замените их ссылками на свои собственные.
— Саймон Каннингем

6

Согласно документации, скрытие / переключение должно работать. Но это не так.

Вот как я это сделал

$('#modal-id').modal('toggle'); //Hide the modal dialog
$('.modal-backdrop').remove(); //Hide the backdrop
$("body").removeClass( "modal-open" ); //Put scroll back on the Body

1
На самом деле это правильный ответ "грубой силы" ... но я предлагаю переписать его, чтобы анимация получилась правильной:$("#modal-id").modal("toggle"); $(".modal-backdrop").fadeOut('fast',function(){ $("body").removeClass( "modal-open" ); $(".modal-backdrop").remove(); });
— DerDu 02

3

Примерь это ..

$('body').removeClass('modal-open');

$('.modal-backdrop').remove();

1

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

Я обнаружил, что <button>тег определяет кнопку с возможностью нажатия и необходим для указания атрибута типа для элемента следующим образом:

<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>

проверьте пример кода для модальных окон начальной загрузки на странице BootStrap javascript Page


0

Если у вас одновременно отображается несколько модальных окон, вы можете указать целевое модальное окно для внутримодальной кнопки с атрибутами data-toggleи data-target:

<div class="modal fade in" id="sendMessageModal" tabindex="-1" role="dialog" aria-hidden="true">
      <div class="modal-dialog modal-sm">
           <div class="modal-content">
                <div class="modal-header text-center">
                     <h4 class="modal-title">Modal Title</h4>
                     <small>Modal Subtitle</small>
                </div>
                <div class="modal-body">
                     <p>Modal content text</p>
                </div>
                <div class="modal-footer">
                     <button type="button" class="btn btn-default pull-left" data-toggle="modal" data-target="#sendMessageModal">Close</button>
                     <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#sendMessageModal">Send</button>
                </div>
           </div>
      </div>
 </div>

Где-то за пределами модального кода у вас может быть еще одна кнопка переключения:

<a href="index.html#" class="btn btn-default btn-xs" data-toggle="modal" data-target="#sendMessageModal">Resend Message</a>

Пользователь не может нажать кнопку переключения в модальном режиме, пока эта кнопка скрыта, и она правильно работает с опцией "modal"для атрибута data-toggle. Эта схема работает автоматически!


0

Вот фрагмент не только для закрытия модальных окон без обновления страницы, но и при нажатии клавиши ввода он отправляет модальные окна и закрывается без обновления.

У меня он настроен на моем сайте, где я могу иметь несколько модальных окон, и некоторые модальные окна обрабатывают данные при отправке, а некоторые нет. Что я делаю, так это создаю уникальный идентификатор для каждого модального окна, которое выполняет обработку. Например, на моей веб-странице:

HTML (модальный нижний колонтитул):

 <div class="modal-footer form-footer"><br>
              <span class="caption">
                <button id="PreLoadOrders" class="btn btn-md green btn-right" type="button" disabled>Add to Cart&nbsp; <i class="fa fa-shopping-cart"></i></button>     
                <button id="ClrHist" class="btn btn-md red btn-right" data-dismiss="modal" data-original-title="" title="Return to Scan Order Entry" type="cancel">Cancel&nbsp; <i class="fa fa-close"></i></a>
              </span>
      </div>

jQUERY:

$(document).ready(function(){
// Allow enter key to trigger preloadorders form
    $(document).keypress(function(e) {       
      if(e.which == 13) {   
          e.preventDefault();   
                if($(".trigger").is(".ok")) 
                   $("#PreLoadOrders").trigger("click");
                else
                    return;
      }
    });
});

Как видите, эта отправка выполняет обработку, поэтому у меня есть этот jQuery для этого модального окна. Теперь предположим, что у меня есть еще один модальный файл на этой веб-странице, но обработка не выполняется, и поскольку одно модальное окно открыто одновременно, я помещаю другой $(document).ready()в глобальный скрипт php / js, который получают все страницы, и даю кнопке закрытия модального окна класс, называемый ".modal-close":

HTML:

<div class="modal-footer caption">
                <button type="submit" class="modal-close btn default" data-dismiss="modal" aria-hidden="true">Close</button>
            </div>

jQuery (включая global.inc):

  $(document).ready(function(){
         // Allow enter key to trigger a particular button anywhere on page
        $(document).keypress(function(e) {
                if(e.which == 13) {
                   if($(".modal").is(":visible")){   
                        $(".modal:visible").find(".modal-close").trigger('click');
                    }
                }
         });
    });
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.