Bootstrap模态背景='静态'不工作

时间:2015-12-23 17:01:19

标签: twitter-bootstrap-3 bootstrap-modal

首先,我用这个打开我的模态:

$('#myModal').modal('show');

然后,在另一种情况下,我需要在按ESC /点击外面时这个相同的模态不会关闭,所以我用这个:

$('#myModal').modal({
    backdrop: 'static',
    keyboard: false
})

但是一旦我用第一种方法打开我的模态,第二种方法就不起作用了。任何提示?

如何强制backdrop值切换工作?

5 个答案:

答案 0 :(得分:13)

我找到了解决此问题的方法。

一旦模态被隐藏,引导数据仍然保留在其上。为了防止我有以下内容:

func getDatabaseScore(completion: (Int?)->()) {
    let ref2 = FIRDatabase.database().reference().child("users").child("user").child((user?.uid)!)

    ref2.observeSingleEvent(of: .childAdded, with: { (snapshot) in
        if let userDict = snapshot.value as? [String:Int] {
            //Do not cast print it directly may be score is Int not string
            completion(userDict["score"])
        }
        completion(nil)
    })
}

答案 1 :(得分:5)

Daniele Piccioni类似,但更简洁:

$('#myModal').modal({backdrop: true, keyboard: false, show: true});
$('#myModal').data('bs.modal').options.backdrop = 'static';

这适用于Bootstrap 3.+

另请参阅:Change Bootstrap modal option once it already exists

答案 2 :(得分:3)

我在Bootstrap 4.1.1上遇到了同样的问题,并且只有在将数据属性添加到html时它才起作用

<div class="modal fade show" id="myModal" tabindex="-1" role="dialog"
  style="display: block;" data-keyboard="false" data-backdrop="static">
...

答案 3 :(得分:0)

我想在AJAX请求完成时禁止关闭模式。

@jollyGreen使我朝着正确的方向前进,但是在 bootstrap 4 中,模态已经显示后,我能务实地做到这一点的唯一方法是这样的:

$("#myModal").data('bs.modal')._config.backdrop = 'static';

也就是说,在v3v4之间,他们似乎已将options数据对象的bs.modal属性更改为_config

答案 4 :(得分:0)

有两种方法可以解决此问题:

1)您可以直接将数据属性添加到HTML中-

<div class="modal fade show" id="myModal" tabindex="-1" role="dialog"
style="display: block;" data-keyboard="false" data-backdrop="static">

2)您可以使用JQuery(对于Bootstrap V4)-

$("#myModal").data('bs.modal')._config.backdrop = 'static'; 

对于Bootstrap V3-

$('#myModal').data('bs.modal').options.backdrop = 'static';