Як змусити twitter bootstrap модально закрити (після початкового запуску)


91

Я дуже нуб, тому я думаю, що я наглядаю за чимось (можливо, очевидним) за допомогою модального твіттера. Я намагаюся отримати модальний запуск лише на мобільному. Це чудово працює з додаванням класу .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. Власне всі модулі js bootstrap (не пропустити включення). Я не маю досвіду роботи з js ..

Будь ласка, вибачте мене, якщо я поставив справді дурне запитання. Я не міг знайти відповіді на цю конкретну ситуацію в журналі.

Відповіді:


219

$('#myModal').modal('hide') повинен це зробити


так, це працює. Але у мене немає тієї самої анімації, яка є у нас за допомогою 'data-dismiss = "modal"'?
Кріс

добре, моя помилка. Насправді я не пам’ятаю проблеми, яка була у мене на той час, зараз я цим користуюся, і вона працює чудово. ТАЙ!
Кріс,

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

6
Це дивно, $('#myModal').modal('show')працює для мене, але приховувати ні.
Шарлотта

3
@LittleBigBot спробуйте використовувати $('#myModal').modal('toggle');замість цього
Edson Horacio Junior

27

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

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

Я вирішив цю проблему, відкривши діалогове вікно за таким посиланням:

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

Не забудьте про ініціалізацію:

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

Я також використовував такі атрибути для кнопки закриття:

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

Привіт артжоме. Thnx! Запустить його і дасть відгук. Ви не використовуєте кнопку à, щоб відкрити модаль? Оскільки цього я намагаюся досягти. Спочатку запустите модальний запуск і лише на мобільному, щоб запропонувати швидке навігаційне меню до місця розташування (не має значення безпосередньо на робочому столі), ось у чому ідея.
Монік Де Хаас,

Так data-dismiss = "modal" data-target = "# myModal" вирішив мою проблему! оцініть!
Dheeraj Thedijje

13

Додайте приховування класу до модального

<!-- 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 ('сховати') вручну приховує модаль. Використовуйте наступний код, щоб закрити модель завантаження

$('#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 Tnx мільйон за відповідь! Я помістив ціль даних. Не спрацювало (на жаль). Тоді я видалив клас видимого телефону. Не змінив. 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

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

Ось фрагмент не тільки для закриття модалів без оновлення сторінки, але при натисканні клавіші enter він подає модаль і закривається без оновлення

У мене це встановлено на моєму сайті, де я можу мати кілька модалів, а деякі модали обробляють дані при подачі, а деякі ні. Що я роблю, це створюю унікальний ідентифікатор для кожного модалу, який виконує обробку. Наприклад, на моїй веб-сторінці:

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.