อัปเดตสำหรับปี 2018 - การใช้ Bootstrap 4
ฉันพบว่าคำตอบส่วนใหญ่ดูเหมือนจะมี jQuery ที่ไม่จำเป็นมากมาย ในการเปิดโมดอลจากโมดอลอื่นสามารถทำได้ง่ายๆโดยใช้เหตุการณ์ที่ Bootstrap ให้ไว้เช่นshow.bs.modal
เพื่อเปิดกิริยาจากกิริยาอื่นสามารถทำได้ง่ายๆโดยการใช้เหตุการณ์ที่เงินทุนให้เช่นคุณอาจต้องการให้ CSS จัดการการซ้อนทับฉากหลัง นี่คือ 3 โมดอลแบบเปิดจากสถานการณ์อื่น ...
เปิดโมดอลจากโมดอลอื่น (เปิดโมดอลที่ 1 ไว้)
<a data-toggle="modal" href="#myModal" class="btn btn-primary">Launch modal</a>
<div class="modal" id="myModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Modal title</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div><div class="container"></div>
<div class="modal-body">
...
<a data-toggle="modal" href="#myModal2" class="btn btn-primary">Open modal2</a>
</div>
<div class="modal-footer">
<a href="#" data-dismiss="modal" class="btn">Close</a>
</div>
</div>
</div>
</div>
<div class="modal" id="myModal2" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">2nd Modal title</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div><div class="container"></div>
<div class="modal-body">
..
</div>
<div class="modal-footer">
<a href="#" data-dismiss="modal" class="btn">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div>
</div>
</div>
ปัญหาที่อาจเกิดขึ้นในกรณีนี้คือฉากหลังจากโมดอลที่ 2 ซ่อนโมดอลที่ 1 เพื่อป้องกันสิ่งนี้สร้างโมดอลที่ 2 data-backdrop="static"
และเพิ่ม CSS เพื่อแก้ไขดัชนี z ของฉากหลัง ...
.modal:nth-of-type(even) {
z-index: 1052 !important;
}
.modal-backdrop.show:nth-of-type(even) {
z-index: 1051 !important;
}
https://www.codeply.com/go/NiFzSCukVl
เปิดโมดอลจากโมดอลอื่น (ปิดโมดอลที่ 1)
สิ่งนี้คล้ายกับสถานการณ์ข้างต้น แต่เนื่องจากเรากำลังปิดโมดอลที่ 1 เมื่อเปิดตัวที่ 2 จึงไม่จำเป็นต้องแก้ไข CSS ฉากหลัง ฟังก์ชันง่ายๆที่จัดการshow.bs.modal
เหตุการณ์โมดอลที่2 จะปิดโมดอลที่ 1
$("#myModal2").on('show.bs.modal', function (e) {
$("#myModal1").modal("hide");
});
https://www.codeply.com/go/ejaUJ4YANz
เปิดกิริยาภายในรูปแบบอื่น
สถานการณ์จำลองล่าสุดหลายรูปแบบกำลังเปิดโมดอลที่ 2 ภายในโมดอลที่ 1 ในกรณีนี้มาร์กอัปสำหรับที่ 2 จะถูกวางไว้ในที่ 1 ไม่จำเป็นต้องใช้ CSS หรือ jQuery เพิ่มเติม
<div class="modal" id="myModal1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Modal title</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="container"></div>
<div class="modal-body">
...
<a data-toggle="modal" href="#myModal2" class="btn btn-primary">Launch modal 2</a>
</div>
<div class="modal-footer">
<a href="#" data-dismiss="modal" class="btn">Close</a>
</div>
</div>
</div>
<div class="modal" id="myModal2">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">2nd Modal title</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="container"></div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<a href="#" data-dismiss="modal" class="btn">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div>
</div>
</div>
</div>
https://www.codeply.com/go/iSbjqubiyn