【问题标题】:Bootstrap 5 - hide modal does not remove backdropBootstrap 5 - 隐藏模式不会删除背景
【发布时间】:2021-11-24 04:20:09
【问题描述】:

使用 Bootstrap 5 创建我的模式:

var myModal = new bootstrap.Modal(document.getElementById('scheduleMeetingModal'), {
    backdrop: 'static'
});
myModal.show();

在另一个功能上,我想隐藏该模式,并使用:

var myModalEl = document.getElementById('scheduleMeetingModal');
var myModal = bootstrap.Modal.getInstance(myModalEl);
myModal.hide();

但是背景仍然存在。我无法更改传递的选项以删除背景,并且在 Bootstrap 文档中找不到任何内容。

我尝试了以下方法但没有成功:

var myModalEl = document.getElementById('scheduleMeetingModal');
var myModal = bootstrap.Modal.getInstance(myModalEl);
myModal.hide();
myModal.modal({backdrop: false});

编辑: 根据要求,我的模态的 html 代码:

<div class="modal" id="scheduleMeetingModal" tabindex="-1" role="dialog">
    <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
        <div class="modal-content">
            <div class="modal-header d-flex justify-content-between">
                <h5 class="modal-title" id="scheduleMeetingModalLabel"><?php echo lang('App.scheduleMeeting'); ?></h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <?php echo form_open_multipart('schedule_meeting', 'id="schedule_meeting" class="needs-validation" novalidate=""'); ?>
                <div class="modal-body">
                    <div class="row form-row">
                        <div class="col-md-6">
                            <div class="mb-3 feature-info-content">
                                <label class="form-label" for="day_one"><?php echo lang('App.day'); ?> *</label>
                                <input class="form-control" type="date" id="day_one" required name="day_one">
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="mb-3 feature-info-content">
                                <label class="form-label" for="time_one"><?php echo lang('App.startTime'); ?> *</label>
                                <input class="form-control" type="time" id="time_one" required name="time_one">
                            </div>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="submit" id="schedule_meeting" class="btn btn-primary ms-5"><?php echo lang('App.submit'); ?></button>
                </div>
            </div>
        <?php echo form_close(); ?>
    </div>
</div>

【问题讨论】:

  • 请给我看你的 HTML 代码...
  • 常规模式,其中包含一个成功提交的表单。不确定 html 如何提供帮助,但我会添加到我的问题中
  • 感谢您的代码。让我在我的答案中添加一些代码,您可以尝试让我知道这是否有效...

标签: javascript bootstrap-modal bootstrap-5


【解决方案1】:
var myModalEl = document.querySelector('#scheduleMeetingModal');
var myModal = bootstrap.Modal.getOrCreateInstance(myModalEl);
myModal.hide();

这个解决方案对我不起作用,我补充说:

$('.modal-backdrop').hide();

删除背景,它的工作原理。

【讨论】:

  • 您使用的是哪个引导程序版本?这个特殊问题与引导程序 5 相关
  • 是的,我使用引导程序 5。
【解决方案2】:

第一个答案让我意识到模态实例没有被正确检索,因此根据 Bootstrap 5 文档,您可以设置或检索模态对象的现有实例。

所以我改变了我的代码如下,它工作了

var myModalEl = document.querySelector('#scheduleMeetingModal');
var myModal = bootstrap.Modal.getOrCreateInstance(myModalEl);
myModal.hide();

这会正确隐藏背景,不涉及进一步更改我的代码,也不涉及全局声明模态实例。

【讨论】:

    【解决方案3】:

    我已经修改了您的代码。您的 javascript 代码无效,为什么它不能正常工作。现在我已经解决了这个问题。您可以运行此代码并检查它。

    var modal = new bootstrap.Modal(
      document.getElementById("scheduleMeetingModal")
    );
    
    function openModal() {
      modal.show();
    }
    
    function closeModal() {
      modal.hide();
    }
    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" />
    
    
    <button class="btn btn-primary" onclick="openModal()">Open Modal</button>
    <!-- Modal -->
    
    
    <div class="modal" id="scheduleMeetingModal" tabindex="-1" role="dialog" aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
            <div class="modal-content">
                <div class="modal-header d-flex justify-content-between">
                    <h5 class="modal-title" id="scheduleMeetingModalLabel"><?php echo lang('App.scheduleMeeting'); ?></h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" onclick="closeModal()"></button>
                </div>
                <?php echo form_open_multipart('schedule_meeting', 'id="schedule_meeting" class="needs-validation" novalidate=""'); ?>
                    <div class="modal-body">
                        <div class="row form-row">
                            <div class="col-md-6">
                                <div class="mb-3 feature-info-content">
                                    <label class="form-label" for="day_one">
                                        <?php echo lang('App.day'); ?> *</label>
                                    <input class="form-control" type="date" id="day_one" required name="day_one"> </div>
                            </div>
                            <div class="col-md-6">
                                <div class="mb-3 feature-info-content">
                                    <label class="form-label" for="time_one">
                                        <?php echo lang('App.startTime'); ?> *</label>
                                    <input class="form-control" type="time" id="time_one" required name="time_one"> </div>
                            </div>
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="submit" id="schedule_meeting" class="btn btn-primary ms-5">
                            <?php echo lang('App.submit'); ?>
                        </button>
                    </div>
            </div>
            <?php echo form_close(); ?>
        </div>
    </div>
    
    
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

    【讨论】:

    • 但为什么我的 javascript 无效?因为模态没有全局声明?
    猜你喜欢
    • 1970-01-01
    • 2016-03-26
    • 2021-10-22
    • 1970-01-01
    • 2015-03-14
    • 2019-01-21
    • 1970-01-01
    • 2014-08-30
    • 2017-07-02
    相关资源
    最近更新 更多