我根本不懂 JavaScript。Bootstrap 文档说
通过 JavaScript 调用模态:
$('#myModal').modal(options)
我不知道如何在页面加载时调用它。使用 Bootstrap 页面上提供的代码,我可以在元素单击时成功调用 Modal,但我希望它在页面加载时立即加载。
我根本不懂 JavaScript。Bootstrap 文档说
通过 JavaScript 调用模态:
$('#myModal').modal(options)
我不知道如何在页面加载时调用它。使用 Bootstrap 页面上提供的代码,我可以在元素单击时成功调用 Modal,但我希望它在页面加载时立即加载。
只需将要在页面加载时调用的模式包装在load
文档头部的 jQuery 事件中,它应该会弹出,如下所示:
JS
<script type="text/javascript">
$(window).on('load', function() {
$('#myModal').modal('show');
});
</script>
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>
您仍然可以通过使用如下链接调用模式来调用页面中的模式:
<a class="btn" data-toggle="modal" href="#myModal">Launch Modal</a>
你不需要javascript
显示模态
最简单的方法是用“in”替换“hide”
class="modal fade hide"
所以
class="modal fade in"
你需要添加onclick = "$('.modal').hide()"
按钮关闭;
PS:我认为最好的方法是添加 jQuery 脚本:
$('.modal').modal('show');
只需添加以下内容 -
class="modal show"
工作示例-
<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">×</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>
你可以试试这个可运行的代码——
$(window).load(function()
{
$('#myModal').modal('show');
});
<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">×</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>
更多可以在这里找到。
认为你有完整的答案。
2021 年更新
现在 Bootstrap 不再需要 jQuery,使用 JavaScript 显示模式很容易。
var myModal = new bootstrap.Modal(document.getElementById('myModal'), {})
myModal.toggle()
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>
关于 Andre 的 Ilich 所说的,你必须在你称之为 jquery 的行之后添加 js 脚本:
<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(window).load(function(){
$('#myModal').modal('show');
});
</script>
就我而言,这是问题希望它有所帮助
使用 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">×</button>
<h4 class="modal-title"><i class="fa fa-exclamation-circle"></i> //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>
在我的情况下,添加 jQuery 来显示模式不起作用:
$(document).ready(function() {
$('#myModal').modal('show');
});
这似乎是因为模态具有属性 aria-hidden="true":
<div class="modal fade" aria-hidden="true" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
需要删除该属性以及上面的 jQuery:
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
请注意,我尝试将模态类从 更改modal fade
为modal fade in
,但这没有用。此外,将类从 更改modal fade
为modal show
停止模式能够关闭。
您可以简单地通过数据属性激活模式,而无需编写任何 JavaScript。
设置为 true 的选项“show”在初始化时显示模态:
<div class="modal fade" tabindex="-1" role="dialog" data-show="true"></div>
就像其他人提到的那样,使用 display:block 创建您的模式
<div class="modal in" tabindex="-1" role="dialog" style="display:block">
...
将背景放在页面上的任何位置,不一定要位于页面底部
<div class="modal-backdrop fade show"></div>
然后,为了能够再次关闭对话框,添加这个
<script>
$("button[data-dismiss=modal]").click(function () {
$(".modal.in").removeClass("in").addClass("fade").hide();
$(".modal-backdrop").remove();
});
</script>
希望这可以帮助
如果不使用 javascript 初始化您的模态,我找不到示例$('#myModal').modal('show')
,因此这里有一个关于如何在页面加载时没有javascript 延迟的情况下实现它的建议。
<div class="modal in" id="MyModal" tabindex="-1" role="dialog" style="display: block; padding-right: 17px;">
用类和风格编辑你的身体:
<body class="modal-open" style="padding-right:17px;">
添加模态背景 div
<div class="modal-backdrop in"></div>
添加脚本
$(document).ready(function() {
$('body').css('padding-right', '0px');
$('body').removeClass('modal-open');
$('.modal-backdrop').remove();
$('#MyModal').modal('show'); });
将会发生的是,您的模态的 html 将在页面加载时加载,而无需任何 javascript(无延迟)。此时您无法关闭模态,这就是为什么我们有 document.ready 脚本,以便在加载所有内容时正确加载模态。我们实际上将删除自定义代码,然后(再次)使用 .modal('show') 初始化模式。
除了 user2545728 和 Reft 的答案,没有 javascript但有modal-backdrop in
3 件事要补充
modal-backdrop in
.modal 类之前的类的 divstyle="display:block;"
到 .modal 类fade in
与 .modal 类一起例子
<div class="modal-backdrop in"></div>
<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="channelModal" style="display:block;">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="channelModal">Welcome!</h4>
</div>
<div class="modal-body" style="height:350px;">
How did you find us?
</div>
</div>
</div>
</div>
<div id="ModalStart" class="modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-body">
<p><i class="icon-spinner icon-spin icon-4x"></i></p>
</div>
</div>
即使没有 Javascript,您也可以在开始时显示它。只需删除类“隐藏”。
class="Modal"
在 bootstrap 3 中,您只需要通过 js 初始化模态,如果在页面加载时模态标记在页面中,模态将显示出来。
如果您想阻止这种情况,show: false
请使用初始化模式的选项。像这样的东西:
$('.modal').modal({ show: false })
Building on the excellent responses from previous answers, in Bootstrap 5 with no jQuery, this has worked;
document.querySelector('[data-target="#exampleModal"]').click();
Full snippet:
window.onload = () => {
document.querySelector('[data-target="#exampleModal"]').click();
}
<script src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css" rel="stylesheet" />
<div class="container py-3">
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<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" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
</div>
您可能希望保持jquery.js
延迟以加快页面加载速度。但是,如果jquery.js
被推迟,则$(window).load
可能无法正常工作。那你可以试试
setTimeout(function(){$('#myModal').modal('show');},3000);
页面完全加载后它会弹出你的模式(包括jquery)
也许已经晚了,但是一旦我无法解决这个订单问题,并且没有显示模态;我使用了 jquery click();
我试过了,效果很好:)
创建一个按钮,调用 Modal show > style 该按钮作为 display : none; 例子 :
$( "#clickme" ).click();
<html>
<head>
<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>
</head>
<body>
<input type="button" value="0" id="clickme" style="display:none;" data-toggle="modal" data-target="#exampleModal" />
<!-- Modal -->
<div id="exampleModal" class="modal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Clicked Successfully</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>
</body></html>
你可以使用 jQuery 来处理这个
首先在您的模板上导入
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
并使用 jQuery Script 在模态框上点击 id
<script type="text/javascript">
$(window).on('load', function() {
$('#staticBackdrop').modal('show');
});
</script>
这是案例显示 django 消息的模式
{% if messages %}
{% for message in messages %}
<div class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="false">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="staticBackdropLabel">Message</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
{{ message }}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
{% endfor %}
{% endif %}
为了避免引导程序被否决并失去其功能,只需创建一个常规启动按钮,为其提供一个 Id,然后使用 jquery '单击它',如下所示: 启动按钮:
<button type="button" id="btnAnouncement" class="btn btn-primary" data-toggle="modal" data-target="#modalAnouncement">
See what´s new!
</button>
jQuery 触发器:
$(document).ready(function () {
$('#btnAnouncement').click();
)}
希望能帮助到你。干杯!
我最近需要启动一个没有 jQuery 的 Bootstrap 5 模式,而不是使用 Django 消息单击按钮(例如,在页面加载时)。我是这样做的:
模板/HTML
<div class="modal" id="notification">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Notification!</h5>
<button type="button" class="btn-close"
data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
{% for m in messages %}
{{ m }}
{% endfor %}
</div>
<div class="modal-footer justify-content-between">
<a class="float-none btn btn-secondary" href="{% url 'some_view' %}"
type="button">
Link/Button A
</a>
<button type="button" class="btn btn-primary"
data-bs-dismiss="modal">
Link/Button B
</button>
</div>
</div>
</div>
</div>
文件或模板中的 JS
{% block javascript %}
{{ block.super }}
<script>
var test_modal = new bootstrap.Modal(
document.getElementById('notification')
)
test_modal.show()
</script>
{% endblock javascript %}
此方法将在没有 Django 模板的情况下工作;只需使用 HTML 并将 JS 放在一个文件或script
元素中,该文件或元素在 Bootstrap JS 之后加载到body
元素结束之前。