第二模态仅限于第一模态区域

时间:2015-11-02 18:50:29

标签: css twitter-bootstrap twitter-bootstrap-3 bootstrap-modal

使用bootstrap 3.3.5并尝试打开第二个模态,并发现一个奇怪的行为:

  1. 背景不显示在第二个模态周围,而不是它 覆盖了第一个模态的背景
  2. 第二种模式是 仅限于第一模态的区域。
  3. 检查示例:http://jsfiddle.net/2zqe93u1/show/

    寻找一种方法来显示第二个模态及其周围的背景,并且没有第一个模态限制的区域。

    代码:

    <div class="modal bs-modal-lg" id="FirstModal" data-backdrop="static" data-keyboard="false" tabindex="-1" role="dialog" aria-labelledby="FiltroLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header">
                    <span class="modal-title">Title #1</span>
                </div>
                <div class="modal-body">
                    <div class="modal" id="SecondModal" tabindex="-1" role="dialog" aria-hidden="true">
                        <div class="modal-dialog">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <h4 class="modal-title">Title #2</h4>
                                </div>
                                <div class="modal-body">
                                    <p>Second Modal</p>
                                    <p>Second Modal</p>
                                    <p>Second Modal</p>
                                    <p>Second Modal</p>
                                    <p>Second Modal</p>
                                    <p>Second Modal</p>
                                </div>
                                <div class="modal-footer">
                                    <button class="btn btn-default" data-number="2">Close</button>
                                </div>
                            </div>
                        </div>
                    </div>
                <a data-toggle="modal" href="#SecondModal" class="btn btn-primary btn-block">Open the second modal</a>
                </div>
                <div class="modal-footer">
                    <a data-loading-text="Wait" class="btn btn-default">Cancel</a>
                </div>
            </div>
        </div>
    </div>
    

2 个答案:

答案 0 :(得分:2)

如上所述@Tim Lewis bootstrap不支持堆叠模态并且一次显示多个模态需要自定义代码

首先删除第一个模态中的第二个模态HTML并将其放在外面,因此HTML将是;

<div class="modal bs-modal-lg" id="FirstModal" data-backdrop="static" data-keyboard="false" tabindex="-1" role="dialog" aria-labelledby="FiltroLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
               <span class="modal-title">Title #1</span>
            </div>
            <div class="modal-body">
                <a data-toggle="modal" href="#SecondModal" class="btn btn-primary btn-block">Open the second modal</a>
            </div>
            <div class="modal-footer">
                <a data-loading-text="Wait" class="btn btn-default">Cancel</a>
            </div>
        </div>
    </div>
</div>
<div class="modal" id="SecondModal" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                    <h4 class="modal-title">Title #2</h4>
            </div>
            <div class="modal-body">
                <p>Second Modal</p>
                <p>Second Modal</p>
                <p>Second Modal</p>
                <p>Second Modal</p>
                <p>Second Modal</p>
                <p>Second Modal</p>
            </div>
            <div class="modal-footer">
                <button class="btn btn-default" data-number="2">Close</button>
            </div>
        </div>
    </div>
</div>

它将解决问题第二个模态仅限于第一个模态的区域。

现在解决问题背景不会显示在第二个模态周围,而不是覆盖第一个模态的背景

在JS中添加以下代码

$(document).ready(function () {
    $('#SecondModal').on('show.bs.modal', function () {
        $('#FirstModal').css('z-index', 1039);
    });

    $('#SecondModal').on('hidden.bs.modal', function () {
        $('#FirstModal').css('z-index', 1041);
    });
});

Fiddle

答案 1 :(得分:-1)

你必须使用两个模式来实现这个目标。

第一点,我可以做到这一点 https://jsfiddle.net/2zqe93u1/

$('#FirstModal').modal('show');
$('#SecondModal').on('shown.bs.modal', function (e) {
$('.modal-backdrop').first().appendTo($(this).parent())
})

$('#SecondModal').on('hidden.bs.modal', function (e) {
$('.modal-backdrop').first().remove()
})
$("button[data-number=2]").click(function(){
$('#SecondModal').modal('hide');
});

但是我无法理解第二个模式,如果第二个模态可以被拖出第一个,为什么背景必须在第一个? 但随着模态事件的发生,我确信你可以做到这一点。 看看jsfiddle来抓住想法