如何使用jQuery打开Bootstrap模态窗口?


768

我正在使用Twitter Bootstrap模态窗口功能。当某人单击我的表单上的提交时,我想在单击表单中的“提交按钮”时显示模式窗口。

<form id="myform" class="form-wizard">
    <h2 class="form-wizard-heading">BootStap Wizard Form</h2>
    <input type="text" value=""/>
    <input type="submit"/>
</form>

<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h3 id="myModalLabel">Modal header</h3>
    </div>
    <div class="modal-body">
        <p>One fine body…</p>
    </div>
    <div class="modal-footer">
        <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
        <button class="btn btn-primary">Save changes</button>
    </div>
</div>

jQuery的:

$('#myform').on('submit', function(ev) {
    $('#my-modal').modal({
        show: 'false'
    }); 


    var data = $(this).serializeObject();
    json_data = JSON.stringify(data);
    $("#results").text(json_data); 
    $(".modal-body").text(json_data); 

    // $("#results").text(data);

    ev.preventDefault();
});

您的表演选项中有错字。它需要一个布尔值,因此不要在'false'周围加上引号-$('#my-modal')。modal({show:false});
达伦·帕克

Answers:


1411

Bootstrap具有一些可以在模式上手动调用的功能:

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

您可以在此处看到更多信息:Bootstrap模态组件

特别是方法部分

因此,您需要更改:

$('#my-modal').modal({
    show: 'false'
}); 

至:

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

如果您要制作自己的自定义弹出窗口,请参考以下来自其他社区成员的视频:

https://www.youtube.com/watch?v=zK4nXa84Km4


5
我不确定为什么这对我来说不起作用。我的页面中有相同的演示代码,并且如上所述编码了Submit按钮。但是,当我单击“提交”时,模式窗口快速闪烁并消失了。我必须单击浏览器的“后退”按钮以返回页面。
克里斯22年

6
我在这里找到了答案。网站页面上的bootrap.js重复链接。
克里斯22年

1
未捕获到的TypeError:$(...)。modal不是函数,这可能是我,但是有任何想法为什么我会收到此错误?(我有jQuery)
Vladimir verleg,2016年

4
我发现了我的问题,我对包含Jquery的文件女巫进行了ajax调用。如果将jQuery包含2次,则它将不起作用!
弗拉基米尔·弗雷格

2
我尝试过,.modal('show')但是在谷歌浏览器中无法正常工作
杜尔加(Durga)

89

另外,您可以通过数据使用属性

<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>

在这种情况下,您无需编写javascript。

您可以在此处查看更多信息:http : //getbootstrap.com/2.3.2/javascript.html#modals


4
需要说明的是:“不需要使用javascript”是指“不需要编写javascript”,仍在使用javascript。我试图编辑答案,但由于它不“更准确”而被拒绝。如果您在禁用javascript的情况下尝试上述代码,则将无法使用。这意味着您确实对我使用了javascript。
npretto

83

通常,当$('#myModal').modal('show');不起作用时,是由两次包含jQuery引起的。包括jQuery 2次使模态不起作用。

删除链接之一以使其再次起作用。

此外,某些插件也会导致错误,在这种情况下,请添加

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

3
带有预打包jQuery版本的DataTables对我造成了这一影响
Wesley Smith

2
非常感谢你。我遇到了同样的问题:模态不是函数。但是添加jQuery.noConflict()之后,它就可以工作了。
Jobayer Ahmmed

1
应该注意的是,仅当您无法解决根本原因(即仅包含jQuery一次)时,才应使用此替代方法。如果某个第三方插件包含该插件,请寻找未包含的版本或与第三方联系以创建一个。
rybo111

19

只需使用jQuery选择器调用模态方法(不传递任何参数)即可。

这是示例:

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

1
如何将更多参数传递给模态?例如,特定的(动态)ID?
Pathros

1
您如何使ID动态化?您是否通过ID填写?如果是,则可以使用jQuery中的$(this)功能来选择当前对象并将参数传递给他。
Brane

13

如果您使用链接的onclick函数通过jQuery调用模式,则“ href”不能为null。

例如:

... ...
<a href="" onclick="openModal()">Open a Modal by jQuery</a>
... ...
... ...
<script type="text/javascript">

function openModal(){

    $('#myModal').modal();
}       
</script>

模态无法显示。正确的代码是:

<a href="#" onclick="openModal()">Open a Modal by jQuery</a>

12

这是在文档准备好后立即加载引导警报的方法。这很容易,只需添加

 $(document).ready(function(){
   $("#myModal").modal();
});

我在W3Schools上做了一个演示

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <h2>Here is how to load a bootstrap modal as soon as the document is ready </h2>
  <!-- Trigger the modal with a 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>

<script>
$(document).ready(function(){
   $("#myModal").modal();
});
</script>

</body>
</html>


10

在此处查看完整的解决方案:

http://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_ref_js_modal_show&stacked=h

确保按要求的顺序放置库以获得结果:

1-首先bootstrap.min.css 2- jquery.min.js 3- bootstrap.min.js

(换句话说,必须在bootstrap.min.js之前调用jquery.min.js)

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
</script> 

 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

7

我尝试了几种方法,但都失败了,但是以下方法对我很有用:

$('#myModal').appendTo("body").modal('show');

2
相同!这也是唯一对我有用的解决方案。
pengz

您确定它不想要.appendTo("modal-body")吗?
詹姆斯·阿·莫勒

@novembersky,您需要将代码放入click事件或使用jquery加载页面时:$(document).ready(function(){$(“#myModal”)。modal();});
Abhijit Kumar

7

尝试在调用函数时使用jQuery而不是$符号,这在我的情况下有效,如下所示。

jQuery.noConflict(); 
jQuery('#myModal').modal('show'); 

jQuery.noConflict(); 因为当jQuery('#myModal')。modal('show'); 不起作用,这是由于两次包含jQuery引起的。包括jQuery 2次使模态不起作用。在这种情况下,它将解决问题,就像我的情况一样。

此外,您可以转到此链接

通过JQuery调用无法显示Bootstrap模型窗口


4

尝试

$("#myModal").modal("toggle")

要打开或关闭ID为myModal的模态。

如果上述方法不起作用,则表明bootstrap.js已被其他js文件覆盖。这是一个解决方案

1:-将bootstrap.js移到底部,以便它将覆盖其他js文件。

2:-确保订单如下

<script src="plugins/jQuery/jquery-2.2.3.min.js"></script>
<!-- Other js files -->
<script src="plugins/jQuery/bootstrap.min.js"></script>

4
<form id="myform" class="form-wizard">
    <h2 class="form-wizard-heading">BootStap Wizard Form</h2>
    <input type="text" value=""/>
    <input type="submit" id="submitButton"/>
</form>

<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h3 id="myModalLabel">Modal header</h3>
    </div>
    <div class="modal-body">
        <p>One fine body…</p>
    </div>
    <div class="modal-footer">
        <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
        <button class="btn btn-primary">Save changes</button>
    </div>
</div>

您可以使用下面的代码启动模式。

$(document).ready(function(){
    $("#submitButton").click(function(){
        $("#myModal").modal();
    });
});

1

尝试这个

myModal1是模态的ID

$('#myModal1').modal({ show: true });


0

引导4.3 -更这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.