在页面加载时启动Bootstrap Modal

Bra*_*don 211 javascript html5 twitter-bootstrap

我根本不懂javascript.引导文档说到

通过javascript调用模态:$('#myModal').modal(options)

我不知道如何在页面加载时调用它.使用引导页面上提供的代码,我可以在单击元素时成功调用Modal,但我希望它在页面加载时立即加载.

And*_*ich 392

只需在页面加载时将要调用的模态包装在load文档头部的jQuery 事件中,它应该弹出,如下所示:

JS

<script type="text/javascript">
    $(window).on('load',function(){
        $('#myModal').modal('show');
    });
</script>
Run Code Online (Sandbox Code Playgroud)

HTML

<div class="modal hide fade" id="myModal">
  <div class="modal-header">
    <a class="close" data-dismiss="modal">×</a>
    <h3>Modal header</h3>
  </div>
  <div class="modal-body">
    <p>One fine body…</p>
  </div>
  <div class="modal-footer">
    <a href="#" class="btn">Close</a>
    <a href="#" class="btn btn-primary">Save changes</a>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

您仍然可以通过以下链接调用它来调用页面中的模态:

<a class="btn" data-toggle="modal" href="#myModal" >Launch Modal</a>
Run Code Online (Sandbox Code Playgroud)

  • 这个答案是对的.有一点需要注意的是,这对于文档就绪事件根本不起作用:`$(document).ready(...`.它只适用于窗口加载事件:`$(window).load(. ..`. (16认同)
  • 另一个重要的注意事项:很多人发布他们的javascript包含在身体的最后.在这种情况下,必须在包含之后包含onload函数. (5认同)

小智 82

你不需要javascript显示模态

最简单的方法是用"in"代替"hide"

class="modal fade hide"
Run Code Online (Sandbox Code Playgroud)

所以

class="modal fade in"
Run Code Online (Sandbox Code Playgroud)

你需要添加onclick = "$('.modal').hide()"按钮关闭;

PS:我认为最好的方法是添加jQuery脚本:

$('.modal').modal('show');
Run Code Online (Sandbox Code Playgroud)

  • 我尝试过这种方法,但遇到两个问题。1)模式不会关闭。2)模态背景消失了。有任何想法吗? (2认同)
  • 上面的jquery解决方案很好用.一行代码可以解决问题.@NickGreen试一试:class ="modal fade".删除'hide'和'in'.这适用于我的情况,但它尚未生效,否则我会发布链接. (2认同)

GAU*_*ALE 38

只需添加以下内容 -

class="modal show"
Run Code Online (Sandbox Code Playgroud)

工作实例 -

<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<div class="container">
  <!-- Trigger the modal with a button -->
  <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

  <!-- Modal -->
  <div class="modal show" id="myModal" role="dialog">
    <div class="modal-dialog">
    
      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Some text in the modal.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
      
    </div>
  </div>
  
</div>
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案无效:对话框永久停留在页面顶部.此外,如果您使用"淡入淡出"类和"模态",则对话框根本不会出现. (10认同)
  • 这取决于模态需要显示的情况,在我的情况下,我希望模态永久卡住. (6认同)
  • @boris,将此添加到模态关闭按钮:`onclick = "$('.modal').removeClass('show').addClass('fade');"` (3认同)

Abr*_*hin 18

你可以尝试这个可运行的代码 -

$(window).load(function()
{
    $('#myModal').modal('show');
});
Run Code Online (Sandbox Code Playgroud)
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<div class="container">
  <!-- Trigger the modal with a button -->
  <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

  <!-- Modal -->
  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">
    
      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Some text in the modal.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
      
    </div>
  </div>
  
</div>
Run Code Online (Sandbox Code Playgroud)

更多信息可以在这里找到.

认为你有完整的答案.


Zim*_*Zim 8

2021 年更新

引导程序 5

现在 Bootstrap 不再需要 jQuery,使用 JavaScript 显示模态很容易。

var myModal = new bootstrap.Modal(document.getElementById('myModal'), {})
myModal.toggle()
Run Code Online (Sandbox Code Playgroud)

演示

引导程序 4

Bootstrap 4 的模态标记略有变化。 以下是如何在页面加载时打开模态,并可选择延迟模态的显示...

$(window).on('load',function(){
    var delayMs = 1500; // delay in milliseconds
    
    setTimeout(function(){
        $('#myModal').modal('show');
    }, delayMs);
});    

<div class="modal fade" id="myModal">
      <div class="modal-dialog modal-lg modal-dialog-centered" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h4 class="modal-title">My Modal</h4>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">×</span>
                    </button>
                </div>
                <div class="modal-body">
                    ...
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary mx-auto" data-dismiss="modal">Close</button>
                </div>
            </div>
      </div>
</div>
Run Code Online (Sandbox Code Playgroud)

演示


JPC*_*PCS 7

关于Andre的Ilich说你必须在你称之为jquery的行之后添加js脚本:

<script src="content/bootstrapJS/jquery-2.1.1.min.js" type="text/javascript"></script>

<script type="text/javascript">
     $(window).load(function(){
         $('#myModal').modal('show');
      });
</script>
Run Code Online (Sandbox Code Playgroud)

在我的情况下,这是问题希望它有所帮助


Fel*_*ima 6

使用 Bootstrap 3 和 jQuery(2.2 和 2.3)测试

$(window).on('load',function(){
  $('#myModal').modal('show');
});



<!-- Modal -->
<div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title"><i class="fa fa-exclamation-circle"></i>&nbsp; //Your modal Title</h4>
        </div>
        <div class="modal-body">
          //Your modal Content
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button>
        </div>
      </div>

    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/d7utnsbm/


小智 6

您只需通过数据属性即可激活模态而无需编写任何JavaScript.

选项"show"设置为true表示初始化时的模态:

<div class="modal fade" tabindex="-1" role="dialog" data-show="true"></div>
Run Code Online (Sandbox Code Playgroud)


Hig*_*lar 5

在我的情况下添加jQuery来显示模态不起作用:

$(document).ready(function() {
    $('#myModal').modal('show');
});
Run Code Online (Sandbox Code Playgroud)

这似乎是因为模态具有属性aria-hidden ="true":

<div class="modal fade" aria-hidden="true" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
Run Code Online (Sandbox Code Playgroud)

除了上面的jQuery之外,还需要删除该属性:

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
Run Code Online (Sandbox Code Playgroud)

请注意,我尝试将模态类更改modal fademodal fade in,但这不起作用.此外,将类更改modal fademodal show停止模态可以关闭.


Ref*_*eft 5

继承人解决方案[没有javascript初始化!]

我没有找到一个没有用javascript初始化你的模态的例子$('#myModal').modal('show'),所以继承人关于如何在没有javascript延迟页面加载的情况下实现它的建议.

  1. 使用类和样式编辑模态容器div:

<div class="modal in" id="MyModal" tabindex="-1" role="dialog" style="display: block; padding-right: 17px;">

  1. 用类和风格编辑你的身体:

    <body class="modal-open" style="padding-right:17px;">

  2. 添加模态背景div

    <div class="modal-backdrop in"></div>

  3. 添加脚本

    $(document).ready(function() {
        $('body').css('padding-right', '0px');
        $('body').removeClass('modal-open');
        $('.modal-backdrop').remove();
    
        $('#MyModal').modal('show'); });
    
    Run Code Online (Sandbox Code Playgroud)

    会发生什么是你的模态的html将加载页面加载没有任何JavaScript,(没有延迟).此时你无法关闭模态,这就是为什么我们有document.ready脚本,以便在加载所有内容时正确加载模态.我们将实际删除自定义代码,然后使用.modal('show')初始化模式(再次).


jBe*_*ger 5

就像其他人提到的那样,使用 display:block 创建模式

<div class="modal in" tabindex="-1" role="dialog" style="display:block">
...
Run Code Online (Sandbox Code Playgroud)

将背景放置在页面上的任何位置,不一定需要位于页面底部

<div class="modal-backdrop fade show"></div> 
Run Code Online (Sandbox Code Playgroud)

然后,为了能够再次关闭对话框,请添加以下内容

<script>
    $("button[data-dismiss=modal]").click(function () {
        $(".modal.in").removeClass("in").addClass("fade").hide();
        $(".modal-backdrop").remove();
    });
</script>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助