Modalny bootstrap: zamknij bieżący, otwórz nowy

84

Szukałem chwilę, ale nie mogę znaleźć na to rozwiązania. Chcę, aby:

  • Otwórz adres URL wewnątrz modalu Bootstrap. Mam to źle działające. Zawartość jest więc ładowana dynamicznie.
  • Kiedy użytkownik naciska przycisk wewnątrz tego modalu, chcę, aby bieżący modal został ukryty, a zaraz potem chcę, aby nowy modal otworzył się z nowym adresem URL (który kliknął użytkownik). Ta zawartość drugiego modalu jest również ładowana dynamicznie.
  • Jeśli użytkownik zamknie następnie drugi moduł, pierwszy moduł musi wrócić ponownie.

Gapię się na to od dni, mam nadzieję, że ktoś może mi pomóc.

Z góry dziękuję.

Eelco Luurtsema
źródło
Bootstrap 2 czy 3? Czy potrafisz skonfigurować skrzypce JS z tego, co masz?
Tim Wasson
Bootstrap 2.3.1. Myślę, że nie mogę skonfigurować
skrzypiec

Odpowiedzi:

59

Nie widząc konkretnego kodu, trudno jest udzielić precyzyjnej odpowiedzi. Jednak w dokumentacji Bootstrap można ukryć modalne w następujący sposób:

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

Następnie pokaż inny modal po jego ukryciu:

$('#myModal').on('hidden.bs.modal', function () {
  // Load up a new modal...
  $('#myModalNew').modal('show')
})

Będziesz musiał znaleźć sposób na przekazanie adresu URL do nowego okna modalnego, ale przypuszczam, że byłoby to trywialne. Bez zapoznania się z kodem trudno podać przykład.

Tim Wasson
źródło
Dziwne dość, że mam pracę z Bootstrap 3. Myślę, że mój kod miał konflikt z Bootstrap podpowiedzi i że zmienia się wersja 3. Dzięki
Eelco Luurtsema
8
Na bootstrap v3 zdarzeniem jest „hidden.bs.modal”
coure2011
3
Rozwiązanie z odrzucaniem danych jest znacznie bardziej eleganckie (przynajmniej w 2015 r.) I nie wymaga żadnego javascriptu innego niż bootstrap.
Manuel Arwed Schmidt
Dzięki @ coure2011
capcom
4
data-toggle = "modal" data-target = "# targetmodal" data-dismiss = "modal" To po prostu działa.
Sushan
79

Wiem, że to późna odpowiedź, ale może się przydać. Oto właściwy i czysty sposób, aby to zrobić, jak wspomniano powyżej @ karima. W rzeczywistości możesz uruchomić dwie funkcje jednocześnie; triggeri dismissmodalne.

HTML Markup;

<!-- Button trigger modal -->
<ANY data-toggle="modal" data-target="TARGET">...</ANY>

<div class="modal fade" id="SELECTOR" tabindex="-1">
  <div class="modal-dialog">
   <div class="modal-content">
    <div class="modal-body"> ... </div>
     <div class="modal-footer">           <!-- ↓ -->  <!--      ↓      -->
      <ANY data-toggle="modal" data-target="TARGET-2" data-dismiss="modal">...</ANY>
     </div>
   </div>
  </div>
</div>

Próbny

Mahmoud
źródło
25
Nie bueno, ponieważ zauważysz, że po otwarciu pierwszego modalu przewijanie strony działa poprawnie, ale jeśli uruchomisz inny modal z istniejącego modalu, przewijanie przesuwa się w tło. Jest to duży problem, jeśli masz modal, który należy przewinąć (np. Jeśli przeglądasz na urządzeniu mobilnym).
Gravity Grave
Mam bardzo podobny problem, ale w kątowym. Czy wiesz, jak zrobić to samo, co tutaj, ale w kontrolerze kątowym i używając właściwości templateUrli windowClass?
John R
1
Dzięki - dla mnie działa. Głównym problemem dla mnie było to, że przegapiłem data-dismiss="modal"przycisk
FDisk
@Mahmoud, hej, czy jest jakiś sposób, aby uniknąć efektu wibracji podczas ładowania drugiego modalu z jednego? i jak uniknąć dodatkowego zwoju?
Arun Xavier
To problem z przeglądarką, w Google Chrome „trzęsiesz się” przy zmianie trybu, zamknięciu lub otwarciu. spróbuj -webkit-backface-visibility: hidden;na html, body css
Máxima Alekz
36

To nie jest dokładnie odpowiedź, ale jest przydatna, gdy chcesz zamknąć bieżący modal i otworzyć nowy modal.

W html w tym samym przycisku możesz poprosić o zamknięcie bieżącego modalu za pomocą odrzucenia danych i otwarcie nowego modalu bezpośrednio z danymi docelowymi:

<button class="btn btn-success" 
data-toggle="modal" 
data-target="#modalRegistration" 
data-dismiss="modal">Register</button>
Karima Rafes
źródło
4
Dzięki za ten pomysł
Jitendra Vyas
2
Problem data-dismiss="modal"polega na tym, że przesunie zawartość w lewo, gdy zamkniesz drugi moduł.
Kuldeep Dangi,
1
hmmmm. ta metoda nie działa dla mnie. Pierwszy znika, ale drugi nigdy się nie pojawia
KevinDeus
Nie jestem pewien, jaki miałeś problem, Kevin, ale działało dobrze dla mnie z Bootstrap 3. Pierwszy modal znika, a drugi otwiera się dobrze :)
RolandiXor
U mnie zadziałało! I bardzo proste rozwiązanie. Dzięki!
guero64
10

Problem data-dismiss="modal"polega na tym, że przesunie zawartość w lewo

Dzielę co pracował dla mnie problemem statment było otwarcie pop1zpop2

KOD JS

var showPopup2 = false;
$('#popup1').on('hidden.bs.modal', function () {
    if (showPopup2) {
        $('#popup2').modal('show');
        showPopup2 = false;
    }
});

$("#popup2").click(function() {
    $('#popup1').modal('hide');
    showPopup2 = true;
});
Kuldeep Dangi
źródło
2
takie proste rozwiązanie :)
Geoff
9

Używam tej metody:

$(function() {
  return $(".modal").on("show.bs.modal", function() {
    var curModal;
    curModal = this;
    $(".modal").each(function() {
      if (this !== curModal) {
        $(this).modal("hide");
      }
    });
  });
});
Josh Dean
źródło
4

Używając poniższego kodu, możesz ukryć pierwszy modalny i natychmiast otworzyć drugi modalny, używając tej samej strategii możesz ukryć drugi modalny i pokazać pierwszy.

$("#buttonId").on("click", function(){
    $("#currentModalId").modal("hide");
    $("#currentModalId").on("hidden.bs.modal",function(){
    $("#newModalId").modal("show");
    });
});
Husnain Shabbir
źródło
Naprawia również problem z przewijaniem
Richard Housham,
4
data-dismiss="modal" 

służy do zamknięcia istniejącego otwartego modelu. możesz ustawić go na nowy model

M. Lak
źródło
Nie jestem użytkownikiem, to działa na wszystkich wersjach bootstrapa. Odrzucenie modalne w moim przypadku powoduje zamknięcie modalu i otwarcie nowego, ale także usunięcie klasy modalnej z ciała i wtedy nie mogę przewinąć modalu w dół.
Bodokh
4

Jak wspomniano powyżej, w html w tym samym przycisku możesz poprosić o zamknięcie bieżącego modalu przez odrzucenie danych i otwarcie nowego modalu bezpośrednio za pomocą data-target:

<button class="btn btn-success" data-toggle="modal" data-target="#modalRegistration" data-dismiss="modal">Register</button>

Ale to spowoduje zniknięcie paska przewijania i zauważysz, że jeśli drugi modal był dłuższy niż pierwszy

Tak więc rozwiązaniem jest dodanie następującego stylu w stylu wbudowanym modalnym:

Style = "overflow-y : scroll ; "

anouar es-sayid
źródło
1
to działa dla mnie: D
Gloria Mahena
2

Dzięki BootStrap 3 możesz spróbować tego: -

var visible_modal = jQuery('.modal.in').attr('id'); // modalID or undefined
if (visible_modal) { // modal is active
    jQuery('#' + visible_modal).modal('hide'); // close modal
}

Przetestowano pod kątem współpracy z: http://getbootstrap.com/javascript/#modals (najpierw kliknij „Launch Demo Modal”).

Alvin K.
źródło
3
Chyba nie potrzebujesz tego .attrkawałka, prawda? Czy to nie zadziałałoby równie dobrze? var visible_modal = jQuery('.modal.in'); if (visible_modal) { visible_modal.modal('hide'); }.
Paul D. Waite
2

Mam dokładnie ten sam problem, a moje rozwiązanie jest tylko wtedy, gdy modalne okno dialogowe ma atrybut [role = "dialog"]:

/*
* Find and Close current "display:block" dialog,
* if another data-toggle=modal is clicked
*/
jQuery(document).on('click','[data-toggle*=modal]',function(){
  jQuery('[role*=dialog]').each(function(){
    switch(jQuery(this).css('display')){
      case('block'):{jQuery('#'+jQuery(this).attr('id')).modal('hide'); break;}
    }
  });
});
Jonny
źródło
1
jsfiddle.net/e6x4hq9h/7 Próbowałem tego i działa przy pierwszym otwarciu modalu, ale nie później.
Joshua Dickerson
2

Miałem ten sam problem, co @Gravity Grave, w którym przewijanie nie działa, jeśli używasz

data-toggle="modal" data-target="TARGET-2" 

w połączeniu z

data-dismiss="modal"

Przewijanie nie działa poprawnie i powraca do przewijania strony, a nie do trybu modalnego. Wynika to z odrzucenia danych, które usuwa klasę modal-open ze znacznika.

Ostatecznie moim rozwiązaniem było ustawienie html wewnętrznego komponentu na modalne i użycie css do zanikania / pojawiania się tekstu.

Jamadan
źródło
1

Korzystanie z funkcji kliknięcia:

$('.btn-editUser').on('click', function(){
    $('#viewUser').modal('hide'); // hides modal with id viewUser 
    $('#editUser').modal('show'); // display modal with id editUser
});

Heads-up:

Upewnij się, że ten, który chcesz pokazać, jest niezależnym modalem.

klaudios
źródło
1

W pierwszym trybie:

zamień link odrzucenia modalnego w stopce na link zamykający poniżej.

<div class="modal-footer">
      <a href="#"  data-dismiss="modal" class="btn btn-primary" data-toggle="modal" data-target="#second_model_id">Close</a>
</div>

W drugim trybie:

Następnie drugi modal zamień górny div na poniższy znacznik div.

<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="add text for disabled people here" aria-hidden="true" id="second_model_id">
Taimoor Changaiz
źródło
1

Miałem ten sam problem, pisząc to tutaj na wypadek, gdyby ktoś w przyszłości się z tym spotkał i ma problemy z wieloma modami, które również muszą mieć przewijanie (używam Bootstrap 3.3.7)

To, co zrobiłem, to taki przycisk w moim pierwszym modalu:

<div id="FirstId" data-dismiss="modal" data-toggle="modal" data-target="#YourModalId_2">Open modal</div>

Ukryje pierwszy, a potem wyświetli drugi, aw drugim trybie miałbym przycisk zamykania, który wyglądałby tak:

<div id="SecondId" data-dismiss="modal" data-toggle="modal" data-target="#YourModalId_1">Close</div>

Więc to zamknie drugi modal i otworzy pierwszy, a aby przewijanie działało, dodałem do mojego pliku .css tę linię:

.modal {
overflow: auto !important;
}

PS: Na marginesie, musisz mieć te modały osobno, modal pomocniczy nie może być zagnieżdżony w pierwszym, gdy ukryjesz pierwszy

Oto pełny przykład oparty na przykładzie modalnym bootstrap:

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

<!-- Modal 1 -->
<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">
        Add lorem ipsum here
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-primary" data-dismiss="modal" data-toggle="modal" data-target="#exampleModal2">
          Open second modal
        </button>
      </div>
    </div>
  </div>
</div>

<!-- Modal 2 -->
<div class="modal fade" id="exampleModal2" 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">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal"  data-toggle="modal" data-target="#exampleModal">Close</button>
      </div>
    </div>
  </div>
</div>
Renet
źródło
1

Spróbuj tego

    $('#model1').modal('hide');
setTimeout(function(){
    $('#modal2').modal('show');
},400);
keroles Monsef
źródło
1
W rzeczywistości jest to lepsze niż przyjęte rozwiązanie, ponieważ żaden słuchacz nie będzie na zawsze powiązany z zamkniętym zdarzeniem modalnym.
Luís Henriques
0
$("#buttonid").click(function(){
    $('#modal_id_you_want_to_hid').modal('hide')
});

// same as above button id
$("#buttonid").click(function(){
$('#Modal_id_You_Want_to_Show').modal({backdrop: 'static', keyboard: false})});
Ajay Kabariya
źródło
$ ("# buttonid"). click (function () {$ ('# modal_id_you_want_to_hid'). modal ('hide')}); // to samo co powyżej id przycisku $ ("# buttonid"). click (function () {$ ('# Modal_id_You_Want_to_Show'). modal ({backdrop: 'static', keyboard: false})})
Ajay Kabariya
0

Używam innego sposobu:

$('#showModal').on('hidden.bs.modal', function() {
        $('#easyModal').on('shown.bs.modal', function() {
            $('body').addClass('modal-open');
        });
    });
Алексей Морозов
źródło
0

Jeśli chcesz zamknąć poprzednio otwarty modal podczas otwierania nowego modalu, musisz to zrobić z javascript / jquery, najpierw zamykając bieżący otwarty modal, a następnie dając limit czasu 400 ms, aby umożliwić zamknięcie, a następnie otwórz nowy modal, jak w poniższym kodzie :

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

setTimeout(function() {
       //your code to be executed after 200 msecond 
       $('#newModal').modal({
           backdrop: 'static'//to disable click close
   })
}, 400);//delay in miliseconds##1000=1second

Jeśli spróbujesz to zrobić za pomocą data-dismiss="modal", będzie miał problem z przewijaniem, o czym wspominali @gravity i @kuldeep w komentarzach.

shivgre
źródło
0

Żadna z odpowiedzi nie pomogła mi, ponieważ chciałem osiągnąć coś dokładnie takiego, jak wspomniane w pytaniu.

W tym celu stworzyłem wtyczkę jQuery.

/*
 * Raj: This file is responsible to display the modals in a stacked fashion. Example:
 * 1. User displays modal A
 * 2. User now wants to display modal B -> This will not work by default if a modal is already displayed
 * 3. User dismisses modal B
 * 4. Modal A should now be displayed automatically -> This does not happen all by itself 
 * 
 * Trying to solve problem for: http://stackoverflow.com/questions/18253972/bootstrap-modal-close-current-open-new
 * 
 */

var StackedModalNamespace = StackedModalNamespace || (function() {
    var _modalObjectsStack = [];
    return {
        modalStack: function() {
            return _modalObjectsStack;
        },
        currentTop: function() {
            var topModal = null;
            if (StackedModalNamespace.modalStack().length) {
                topModal = StackedModalNamespace.modalStack()[StackedModalNamespace.modalStack().length-1];
            }
            return topModal;
        }
    };
}());

// http://stackoverflow.com/a/13992290/260665 difference between $.fn.extend and $.extend
jQuery.fn.extend({
    // https://api.jquery.com/jquery.fn.extend/
    showStackedModal: function() {
        var topModal = StackedModalNamespace.currentTop();
        StackedModalNamespace.modalStack().push(this);
        this.off('hidden.bs.modal').on('hidden.bs.modal', function(){   // Subscription to the hide event
            var currentTop = StackedModalNamespace.currentTop();
            if ($(this).is(currentTop)) {
                // 4. Unwinding - If user has dismissed the top most modal we need to remove it form the stack and display the now new top modal (which happens in point 3 below)
                StackedModalNamespace.modalStack().pop();
            }
            var newTop = StackedModalNamespace.currentTop();
            if (newTop) {
                // 3. Display the new top modal (since the existing modal would have been hidden by point 2 now)
                newTop.modal('show');
            }
        });
        if (topModal) {
            // 2. If some modal is displayed, lets hide it
            topModal.modal('hide');
        } else {
            // 1. If no modal is displayed, just display the modal
            this.modal('show');
        }
    },
});

Working Fiddle w celach informacyjnych, JSFiddle: https://jsfiddle.net/gumdal/67hzgp5c/

Musisz tylko wywołać za pomocą mojego nowego API „ showStackedModal()” zamiast po prostu „ modal('show')”. Część ze skóry może nadal być taka sama jak poprzednio, a skumulowane podejście do pokazywania i ukrywania modali jest automatycznie obsługiwane.

Raj Pawan Gumdal
źródło
0

Proste i eleganckie rozwiązanie dla BootStrap 3.x. W ten sposób można ponownie wykorzystać ten sam modal.

$("#myModal").modal("hide");
$('#myModal').on('hidden.bs.modal', function (e) {
   $("#myModal").html(data);
   $("#myModal").modal();
   // do something more...
}); 
Avnish alok
źródło
0

jeśli używasz mdb, użyj tego kodu

    var visible_modal = $('.modal.show').attr('id'); // modalID or undefined
    if (visible_modal) { // modal is active
        $('#' + visible_modal).modal('hide'); // close modal
    }
Moein masoudi
źródło
0
<div class="container">
  <h1>Bootstrap modal: close current, open new</h1>
  <p class="text-muted">
  A proper and clean way to get this done without addtional Javascript/jQuery. The main purpose of this demo is was to answer this 
  <a href="http://stackoverflow.com/questions/18253972/bootstrap-modal-close-current-open-new">question on stackoverflow</a>
  </p>
  <hr />

  <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#demo-1">Launch Modal #1</button>
  <button type="button" class="btn btn-info"    data-toggle="modal" data-target="#demo-2">Launch Modal #2</button>
  <button type="button" class="btn btn-default" data-toggle="modal" data-target="#demo-3">Launch Modal #3</button>

  <!-- [ Modal #1 ] -->
  <div class="modal fade" id="demo-1" tabindex="-1">
    <div class="modal-dialog">
     <div class="modal-content">
      <button type="button" class="close" data-dismiss="modal"><i class="icon-xs-o-md"></i></button>
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title caps"><strong>Demo Modal #1</strong></h4>
      </div>
      <div class="modal-body">
        <div class="form-group">
          <div class="input-group">
            <input type="text" class="form-control" placeholder="Input Placeholder..." />
            <span class="input-group-btn"><button class="btn btn-default" type="button">Action</button></span>
          </div>
        </div>
      </div>
       <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">&times;</button>
            <button type="button" class="btn btn-info" data-toggle="modal" data-target="#demo-2" data-dismiss="modal">Close current, Launch Modal #2</button>
            <button type="button" class="btn btn-default" data-toggle="modal" data-target="#demo-3" data-dismiss="modal">Close current, Launch Modal #3</button>
        </div>
     </div>
    </div>
  </div>

  <!-- [ Modal #2 ] -->
  <div class="modal fade" id="demo-2" tabindex="-1">
    <div class="modal-dialog">
     <div class="modal-content">
      <button type="button" class="close" data-dismiss="modal"><i class="icon-xs-o-md"></i></button>
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title caps"><strong>Demo Modal #2</strong></h4>
      </div>
      <div class="modal-body">
        <div class="form-group">
          <div class="input-group">
            <input type="text" class="form-control" placeholder="Input Placeholder..." />
            <span class="input-group-btn"><button class="btn btn-default" type="button">Action</button></span>
          </div>
        </div>
      </div>
       <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">&times;</button>
            <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#demo-1" data-dismiss="modal">Close current, Launch Modal #1</button>
            <button type="button" class="btn btn-default" data-toggle="modal" data-target="#demo-3" data-dismiss="modal">Close current, Launch Modal #3</button>
        </div>
     </div>
    </div>
  </div>

  <!-- [ Modal #3 ] -->
  <div class="modal fade" id="demo-3" tabindex="-1">
    <div class="modal-dialog">
     <div class="modal-content">
      <button type="button" class="close" data-dismiss="modal"><i class="icon-xs-o-md"></i></button>
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title caps"><strong>Demo Modal #3</strong></h4>
      </div>
      <div class="modal-body">
        <div class="form-group">
          <div class="input-group">
            <input type="text" class="form-control" placeholder="Input Placeholder..." />
            <span class="input-group-btn"><button class="btn btn-default" type="button">Action</button></span>
          </div>
        </div>
      </div>
       <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">&times;</button>
            <button type="button" class="btn btn-info" data-toggle="modal" data-target="#demo-1" data-dismiss="modal">Close current, Launch Modal #1</button>
            <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#demo-2" data-dismiss="modal">Close current, Launch Modal #2</button>
        </div>
     </div>
    </div>
  </div>

  <hr />
  <h3 class="caps">Usage:</h3>
<pre class="prettyprint">&lt;!-- Button trigger modal --&gt;
&lt;ANY data-toggle="modal" data-target="TARGET"&gt;...&lt;/ANY&gt;

&lt;div class="modal fade" id="SELECTOR" tabindex="-1"&gt;
  &lt;div class="modal-dialog"&gt;
   &lt;div class="modal-content"&gt;
    &lt;div class="modal-body"&gt; ... &lt;/div&gt;
     &lt;div class="modal-footer"&gt;           &lt;!-- ↓ --&gt;  &lt;!--      ↓      --&gt;
      &lt;ANY data-toggle="modal" data-target="TARGET-2" data-dismiss="modal"&gt;...&lt;/ANY&gt;
     &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre>
</div> <!-- end .container -->

<hr />
<footer class="text-center"><a href="https://twitter.com/_elmahdim">@_elmahdim</a></footer>
<br />
<br />
Junaid Masood
źródło
0

Mogę się trochę spóźnić, ale myślę, że znalazłem działające rozwiązanie.

Wymagany -

jQuery

Wszystkie modały z przyciskiem zamykania / zamykania z atrybutami ustawionymi w następujący sposób -

<button type="button" class="btn close_modal" data-toggle="modal" data-target="#Modal">Close</button>  

Zobacz klasę close_modal dodaną do klas przycisku

Teraz, aby zamknąć wszystkie istniejące modały, zadzwonimy

$(".close_modal").trigger("click");

Tak więc, gdziekolwiek chcesz otworzyć modal

Po prostu dodaj powyższy kod, a wszystkie otwarte modały zostaną zamknięte.

Następnie dodaj swój normalny kod, aby otworzyć żądany modal

$("#DesiredModal").modal();
Alfa
źródło
0

Ukryj modalne okno dialogowe.

Metoda 1: użycie Bootstrap.

$('.close').click(); 
$("#MyModal .close").click();
$('#myModalAlert').modal('hide');

Metoda 2: używanie stopPropagation().

$("a.close").on("click", function(e) {
  $("#modal").modal("hide");
  e.stopPropagation();
});

Metoda 3: po wywołaniu metody.

$('#myModal').on('shown', function () {
  $('#myModal').modal('hide');
})

Metoda 4: Korzystanie z CSS.

this.display='block'; //set block CSS
this.display='none'; //set none CSS after close dialog
Bharathiraja
źródło
0

Ten kod, zamknij otwarty modal, otwórz nowy modal, ale natychmiast nowy modal zostanie zamknięty.

$(nameClose).modal('hide');
$(nameOpen).modal('show');

Moje rozwiązanie do otwierania nowego modalu po zamknięciu innych to:

function swapModals(nameClose,nameOpen) {
    $(nameClose).modal('hide');
    $(nameClose).on('hidden.bs.modal', function () {
        console.log('Fired when hide event has finished!');
        $(nameOpen).modal('show');
    });
}
Adrian Garcia Sabate
źródło
0

Po prostu skopiuj i wklej ten kod i możesz eksperymentować z dwoma modami. Drugi modal jest otwarty po zamknięciu pierwszego:

<!-- Button to Open the Modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
    Open modal
</button>

<!-- The Modal -->
<div class="modal" id="myModal">
    <div class="modal-dialog">
        <div class="modal-content">

            <!-- Modal Header -->
            <div class="modal-header">
                <h4 class="modal-title">Modal Heading</h4>
                <button type="button" class="close" data-dismiss="modal">&times;</button>
            </div>

            <!-- Modal body -->
            <div class="modal-body">
                Modal body..
            </div>

            <!-- Modal footer -->
            <div class="modal-footer">
                <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
            </div>

        </div>
    </div>
</div>



<!-- The Modal 2 -->
<div class="modal" id="myModal2">
    <div class="modal-dialog">
        <div class="modal-content">

            <!-- Modal Header -->
            <div class="modal-header">
                <h4 class="modal-title">Second modal</h4>
                <button type="button" class="close" data-dismiss="modal">&times;</button>
            </div>

            <!-- Modal body -->
            <div class="modal-body">
                Modal body..
            </div>

            <!-- Modal footer -->
            <div class="modal-footer">
                <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
            </div>

        </div>
    </div>
</div>




<script>
    $('#myModal').on('hidden.bs.modal', function () {
        $('#myModal2').modal('show')
    })
</script>

Twoje zdrowie!

Adam Kozłowski
źródło