Tak więc używam tego kodu, aby otworzyć inne okno modalne w aktualnie otwartym oknie modalnym:
<a onclick=\"$('#login').modal('hide');$('#lost').modal('show');\" href='#'>Click</a>
Dzieje się tak, że przez około 500 ms pasek przewijania będzie się duplikował. Myślę, że obecny modal wciąż zanika. Jednak wygląda to na bardzo nierówne i zacinające się.
Byłbym wdzięczny za wszelkie sugestie dotyczące rozwiązania tego problemu.
Czy sposób budowania tego w wydarzeniu onclick jest nieprofesjonalny?
Pracuję z wersją bootstrap 3.0.
Edycja: Myślę, że konieczne jest skrócenie czasu zanikania modalu. Jak to jest możliwe?
Odpowiedzi:
Moje rozwiązanie nie zamyka dolnego modalu, ale naprawdę układa się na nim. Prawidłowo zachowuje zachowanie przewijania. Testowane w Bootstrap 3. Aby modały ustawiały się w stos zgodnie z oczekiwaniami, musisz ustawić je w swoim znaczniku HTML w kolejności od najniższej do najwyższej.
AKTUALIZACJA: Po ułożeniu modali wszystkie tła pojawiają się poniżej najniższego modalu. Możesz to naprawić, dodając następujący kod CSS:
Spowoduje to pojawienie się tła modalnego poniżej najwyższego widocznego modalu. W ten sposób szarzeje twoje niższe modały pod spodem.
źródło
data-dismiss
zamyka aktualne okno modalnedata-toggle
otwiera nowy modal zhref
zawartością w nimlub
daj nam znać, czy to działa.
źródło
data-dismiss
robi. Zamyka bieżące okno i otwiera nowe. Czy możesz wysłać swój kod wbootply
lubjsfiddle
?.modal { overflow-y: auto }
rozwiązuje problem przewijania BS4.Aby otworzyć inne okno modalne w aktualnie otwartym oknie modalnym,
możesz użyć bootstrap-modal
bootstrap-modal DEMO
źródło
Spróbuj tego
źródło
Możesz faktycznie wykryć, kiedy stary modal się zamyka, wywołując
hidden.bs.modal
zdarzenie:Więcej informacji: http://getbootstrap.com/javascript/#modals-events
źródło
Aktualizacja na 2018 rok - przy użyciu Bootstrap 4
Zauważyłem, że większość odpowiedzi zawiera dużo niepotrzebnego jQuery. Aby otworzyć modal z innego modalu, można po prostu użyć zdarzeń, które zapewnia Bootstrap, takich jak
show.bs.modal
. Możesz również chcieć, aby niektóre arkusze CSS obsługiwały nakładki tła. Oto 3 otwarte modalne z innych scenariuszy ...Otwórz modal z innego modalu (pozostaw pierwszy modal otwarty)
Potencjalnym problemem w tym przypadku jest to, że tło z drugiego modułu ukrywa pierwszy moduł. Aby temu zapobiec, utwórz drugi modal
data-backdrop="static"
i dodaj trochę CSS, aby naprawić indeksy z tła ...https://www.codeply.com/go/NiFzSCukVl
Otwórz modal z innego modalu (zamknij pierwszy modal)
Jest to podobne do powyższego scenariusza, ale ponieważ zamykamy pierwszy modal, gdy drugi jest otwarty, nie ma potrzeby poprawiania tła CSS. Prosta funkcja obsługująca drugie
show.bs.modal
zdarzenie modalne zamyka pierwszy modal.https://www.codeply.com/go/ejaUJ4YANz
Otwórz modal w środku innego modalu
Ostatnim scenariuszem z wieloma trybami jest otwarcie drugiego modalu wewnątrz pierwszego modalu. W tym przypadku znacznik drugiego miejsca jest umieszczony wewnątrz pierwszego. Nie jest potrzebny żaden dodatkowy CSS ani jQuery.
https://www.codeply.com/go/iSbjqubiyn
źródło
.modal-backdrop.show + .modal.show { z-index: 1052 !important; } .modal-backdrop.show + .modal.show + .modal-backdrop.show { z-index: 1051 !important; }
Modały w trybie modalnym:
źródło
Pracuję nad projektem, który ma wiele modali wywołujących inne modale i kilku facetów HTML, którzy mogą nie wiedzieć, jak inicjować go za każdym razem dla każdego przycisku. Doszedł do podobnego wniosku, co @gmaggio, niechętnie po tym, jak najpierw przeszedł długą drogę.
EDYCJA: Teraz obsługuje modale wywoływane przez javascript.
EDYCJA: Teraz działa otwieranie przewijanego modalu z innego modalu.
Po prostu umieść przycisk wywoływania modalnego w normalny sposób, a jeśli zostanie odebrany jako znajdujący się wewnątrz modalu, zamknie on najpierw bieżący, zanim otworzy ten określony w celu danych. Zauważ, że
relatedTarget
jest dostarczane przez Bootstrap.Dodałem również, aby nieco wygładzić zanikanie: Jestem pewien, że można zrobić więcej.
źródło
Dokumenty na Twitterze mówią, że wymagany jest niestandardowy kod ...
Działa to bez dodatkowego JavaScript, jednak niestandardowy CSS byłby wysoce zalecany ...
źródło
z-index: 1080 !important;
W przypadku bootstrap 4, aby rozwinąć odpowiedź @ helloroy, użyłem następującego; -
Zaletą powyższego jest to, że nie ma żadnego efektu, gdy jest tylko jeden modal, działa tylko dla wielokrotności. Po drugie, przekazuje obsługę ciału, aby zapewnić, że przyszłe modały, które nie są obecnie generowane, są nadal obsługiwane.
Aktualizacja
Przejście do połączonego rozwiązania js / css poprawia wygląd - animacja zanikania nadal działa w tle; -
w połączeniu z następującym css; -
To poradzi sobie z modami zagnieżdżonymi do 4 głębokości, czyli więcej niż potrzebuję.
źródło
Spróbuj tego:
Ten prosty hack działa dla mnie.
źródło
Dla kogoś, kto używa bootstrap 4 https://jsfiddle.net/helloroy/tmm9juoh/
źródło
Miałem też problemy z przewijanymi modami, więc zrobiłem coś takiego:
Będzie służyć dla każdego modalu , który pojawi się. Zauważ, że pierwsza jest zamknięta, więc druga może się pojawić. Brak zmian w strukturze Bootstrap.
źródło
Poszedłem razem trochę inną trasą, postanowiłem ich „De-Nest”. Może komuś to się przyda ...
źródło
Mój kod działa dobrze przy użyciu odrzucania danych.
źródło
Zamknij pierwszy modal Bootstrap i dynamicznie otwórz nowy modal.
źródło
Dlaczego po prostu nie zmienić treści korpusu modalnego?
W oknie modalnym po prostu umieść link lub przycisk
Jeśli chcesz po prostu przełączyć się między 2 trybami:
W oknie modalnym po prostu umieść link lub przycisk
źródło
Spróbuj tego:
źródło
Odpowiedź udzielona przez H Dog jest świetna, ale to podejście dawało mi trochę migotania modalnego w Internet Explorerze 11. Bootstrap najpierw ukryje modal, usuwając klasę „modal-open”, a następnie (używając rozwiązania H Dogs) dodamy klasa „modal-open” ponownie. Podejrzewam, że w jakiś sposób powoduje to migotanie, które widziałem, być może z powodu powolnego renderowania HTML / CSS.
Innym rozwiązaniem jest przede wszystkim zapobieganie usuwaniu przez bootstrap klasy „modal-open” z elementu body. Używając Bootstrap 3.3.7, to nadpisanie wewnętrznej funkcji hideModal działa idealnie dla mnie.
W tym zastąpieniu klasa „modal-open” jest usuwana tylko wtedy, gdy na ekranie nie ma widocznych modali. I zapobiegasz jednej klatce usuwania i dodawania klasy do elementu body.
Po prostu dołącz nadpisanie po załadowaniu bootstrapu.
źródło
źródło