防止Bootstrap Modal在外部点击或按下escape时消失?

时间:2013-04-22 16:29:59

标签: html twitter-bootstrap modal-dialog

我正在使用Twitter Bootstrap模式作为向导窗口,并希望在单击模态外部或按下escape时阻止用户关闭它。相反,我希望在用户按下完成按钮时关闭它。我怎么能实现这种情况?

16 个答案:

答案 0 :(得分:743)

如果使用JavaScript,那么:

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

并在HTML中:

<a data-controls-modal="your_div_id" data-backdrop="static" data-keyboard="false" href="#">

答案 1 :(得分:218)

也适用于data-backdrop="static"点击并在你的div模式中点击data-keyboard="false"到Esc:

<div id="idModal" class="modal hide" data-backdrop="static" data-keyboard="false">

答案 2 :(得分:48)

您也可以在Bootstrap模型中使用Direct。

<div class="modal fade" id="myModal" data-keyboard="false" data-backdrop="static">

答案 3 :(得分:37)

  

只需将<head> ... <meta name="viewport" content="width=device-width, initial-scale=1.0"> ... <head/> @media screen and (max-width: 1000px){ #title{ width:50%; } } 属性添加到该模式。

例如

data-backdrop="static"

答案 4 :(得分:22)

您可以使用以下代码

$.fn.modal.prototype.constructor.Constructor.DEFAULTS.backdrop = 'static';

更改默认行为。

答案 5 :(得分:16)

我使用这些属性并且有效,Boogeyman

答案 6 :(得分:14)

jQuery('#modal_ajax').modal('show', {backdrop: 'static', keyboard: false});

答案 7 :(得分:10)

<button class="btn btn-primary btn-lg" data-backdrop="static" data-keyboard="false" data-target="#myModal" data-toggle="modal">

答案 8 :(得分:8)

如果您在模态之外单击,此代码将阻止模态关闭。

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

答案 9 :(得分:7)

<button class='btn btn-danger fa fa-trash' data-toggle='modal' data-target='#deleteModal' data-backdrop='static' data-keyboard='false'></button>

只需将data-background和data-keyboard属性添加到打开模型的按钮上即可。

答案 10 :(得分:5)

如果您需要禁用外部点击但启用按退出

$('#myModal').modal({
    backdrop: 'static',   // This disable for click outside event
    keyboard: true        // This for keyboard event
})

答案 11 :(得分:4)

以下脚本对我有用:

// prevent event when the modal is about to hide
$('#myModal').on('hide.bs.modal', function (e) {
    e.preventDefault();
    e.stopPropagation();
    return false;
});

答案 12 :(得分:1)

当我点击模态时你的代码正常工作,但是如果我在模态体内使用html input 字段,那么将光标对准该输入,然后按 {模态已关闭的{1}} 键。 点击here

答案 13 :(得分:1)

您应该使用背景静态,键盘为假。并可以使用jQuery使用关闭按钮关闭,也可以从模式HTML中删除。希望有帮助。

 $('#MyModal').modal({ backdrop: 'static', keyboard: false });
    $('#MyModal .close').css('display','none');

答案 14 :(得分:0)

<div class="modal show">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">     

    <h4 class="modal-title">Modal title</h4>
     </div>
     <div class="modal-body">
      <p>One fine body&hellip;</p>
  </div>

  </div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->

我认为这个codepen可以帮助你 prevent modal close css and bootstrap

答案 15 :(得分:0)

如果需要在显示 之后进行设置,可以使用@Nabid解决方案。但是,有时您仍然需要允许 some 方法关闭模式。假设您有一个类为really-close-the-modal的按钮,它应该确实关闭了模式,则可以使用以下代码(jquery):

var closeButtonClicked = false;

$('.really-close-the-modal').on('click', function () {
    closeButtonClicked = true;
});

$('#myModal').on('hide.bs.modal', function (e) {
    if (!closeButtonClicked) {
        e.preventDefault();
        e.stopPropagation();
        return false;
    }
    closeButtonClicked = false;
});

这并不是很好的代码设计,但是在使用加载程序动画显示模态的情况下,这对我有帮助,直到ajax请求返回,然后才知道是否需要对模态进行配置以防止“隐式”关闭。您可以使用类似的设计来防止在加载模态时关闭模态。