Ich habe ein Modal und innerhalb dieses Modals gibt es ein Dropdown-Menü, in dem große versteckte Inhalte angezeigt werden, die funktionieren.
Wenn Sie nun das nächste Modal öffnen, das über dem ersten Modal gestapelt ist, und es schließen, wird das Scrollen auf dem darunter liegenden Modal deaktiviert.
Ich habe ein vollständiges Beispiel erstellt, einschließlich der Schritte zum Replizieren des Problems, mit dem ich konfrontiert bin. Sie können es hier sehen .
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">
<title></title>
<style>
</style>
</head>
<body>
<input type="button" data-toggle="modal" data-target="#modal_1" class="btn btn-lg btn-primary" value="Open Modal 1" >
<div class="modal fade" id="modal_1">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
<h4 class="modal-title">First Modal</h4>
</div>
<div class="modal-body">
<form class="form">
<div class="form-group">
<label>1) Open This First: </label>
<input type="button" data-toggle="modal" data-target="#modal_2" class="btn btn-primary" value="Open Modal 2" >
</div>
<div class="form-group">
<label>2) Change this once you have opened the modal above.</label>
<select id="change" class="form-control">
<option value="small">Show Small Content</option>
<option value="large">Show Large Content</option>
</select>
</div>
<div id="large" class='content-div'>
<label>Large Textarea Content.. Try and scroll to the bottom..</label>
<textarea rows="30" class="form-control"></textarea>
</div>
<div id="small" class='content-div'>
<label> Example Text Box</label>
<input type="text" class="form-control">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modal_2">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
<h4 class="modal-title">Second Modal</h4>
</div>
<div class="modal-body">
<hp>This is the stacked modal.. Close this modal, then chenge the dropdown menu, you cannot scroll... </h5>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</body>
<script src="http://code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$(".content-div").hide();
$("#change").change(function() {
$(".content-div").hide();
$("#" + $(this).val()).show();
});
});
</script>
</html>
Hier ist eine Bootply, um das Verhalten in Aktion zu zeigen:
jquery
html
twitter-bootstrap
Carl Smith
quelle
quelle
Antworten:
Dies ist auch eine Lösung
http://www.bootply.com/LZBqdq2jl5
Auto funktioniert gut :) Dies behebt tatsächlich alle Modalitäten, die höher als Ihre Bildschirmgröße sind.
quelle
$('.modal').css('overflow-y', 'auto');
Dies liegt daran, dass beim Schließen eines Modals das
modal-open
aus dem<body>
Tag entfernt wird. Bootstrap unterstützt nicht mehrere Modalitäten auf derselben Seite (zumindest bis BS3).Eine Möglichkeit, dies zum
hidden.bs.modal
Laufen zu bringen, besteht darin, das von BS beim Schließen eines Modals ausgelöste Ereignis zu verwenden und dann zu überprüfen, ob ein anderes Modal offen ist, um diemodal-open
Klasse dem Körper aufzuzwingen .quelle
Ich habe eine Lösung für Sie gefunden. Ich bin nicht sicher, warum es nicht funktioniert, aber nur ein Zeilencode in Ihrem CSS wird das Problem lösen. Nach dem Schließen des zweiten Modals werden die ersten
overflow-y:hidden
irgendwie. Auch wenn esauto
tatsächlich eingestellt ist.Sie müssen dies neu schreiben und Ihre eigene Deklaration in CSS festlegen:
Hier haben Sie eine funktionierende DEMO
Edit : falscher Link, sorry.
quelle
quelle
Folgen Sie https://github.com/nakupanda/bootstrap3-dialog/issues/70 add
zu Ihrem CSS
quelle
Für Bootstrap 4 musste ich hinzufügen! Wichtig
Wenn dies nicht getan wird, funktioniert es nicht und es wird nicht angewendet.
quelle
Zunächst einmal werden mehrere offene Modalitäten von Bootstrap nicht unterstützt. Siehe hier: Bootstrap Modal-Dokumente
Wenn Sie müssen, können Sie dieses CSS-Bit in Ihr benutzerdefiniertes Stylesheet einfügen, sofern es nach dem Haupt-Bootstrap-Stylesheet enthalten ist:
quelle
Ich habe das Problem durch Entfernen
data-dismiss="modal"
und Hinzufügen gelöstIch hoffe es hilft
quelle
Ich gehe davon aus, dass dies an einem Fehler im Twitter-Bootstrap liegt. Es scheint die
modal-open
Klasse aus dem Körper zu entfernen, selbst wenn zwei Modalitäten offen waren. Sie können einen Test für dieremoveClass
Funktion von jQuery durchführen und ihn umgehen, wenn noch ein Modal offen ist (das Guthaben für die Basisfunktion geht an diese Antwort: https://stackoverflow.com/a/1950199/854246 ).quelle
Bootstrap unterstützte nicht mehrere Modalitäten gleichzeitig. Es ist ein Bootstrap-Fehler. Fügen Sie einfach das folgende Skript für BS4 hinzu.
quelle
quelle
Dieser Code löste meinen, als das zweite Popup geschlossen wurde, kann mein erstes Popup nicht mehr scrollen.
quelle
Eine Art Hack, aber ich mag es, ihn einfach zu schließen und wieder zu öffnen, wenn er modal geschlossen wird, um seltsames / unerwünschtes Verhalten zu beseitigen. Wenn Sie die Überblendung deaktiviert haben, können Sie nicht feststellen, dass sie geschlossen und wieder geöffnet wird:
quelle
Fügen Sie über JQuery die Klasse 'modal-open' zum Body hinzu. Ich gehe davon aus, dass die Schriftrolle auf allen außer dem Modal funktioniert.
Als Kommentar zu den vorherigen Antworten: Das Hinzufügen der Überlaufeigenschaft zum Modal (über CSS) hilft, aber dann haben Sie zwei Bildlaufleisten auf der Seite.
quelle
Dies ist auch eine Lösung
quelle
Ich habe tatsächlich eine Lösung dafür gefunden. Sie müssen das Scrollen für Ihren Seitenkörper aktivieren, wenn Sie
$('#myModal').hide();
ein Modell ausblenden möchten. Schreiben Sie einfach die folgende Zeile nach$('#myModal').hide();
:Dadurch wird das Scrollen wieder aktiviert.
quelle
Wenn Sie bootstrap3 oder 4 verwenden, stellen Sie sicher, dass Sie eine Klasse haben, die im HTML-Body modal-open ist. Ich bin nicht sicher, ob dies obligatorisch ist, aber stellen Sie möglicherweise sicher, dass Ihr Z-Index des modalen Hintergrunds gelöscht ist.
quelle
Fügen Sie dies unter js Code hinzu
quelle