我在第一次加载页面时使用会话存储来显示和隐藏模态。我不知道如何使用cookies,所以我只使用会话存储。
在模态中,我在第一次关闭它时更改标题和关闭按钮,然后可以作为"帮助模式"而不是"开始"。
如果未设置会话存储且处于"开始使用"我想阻止使用esc
关闭模式模式,但当你关闭模态并重新打开它作为"帮助模式"启用esc
事件。
目前我的工作时间为50%,第一次无法使用esc
,但如果您将其作为"帮助"您仍然无法使用esc
,但是,如果您重新加载页面esc
它可以使用,
以下是我的代码的else
部分,在未设置会话存储时有效:
} else {
// show the help modal
$('#help').modal({
keyboard: false
});
$('#help').modal('show');
$('#help').on('hidden.bs.modal', function (e) {
keyboard: true
})
}
文档(https://getbootstrap.com/docs/4.0/components/modal/#events)
表示当模态完成对用户的隐藏时会触发.on('hidden.bs.modal'
事件。
我必须使用哪个事件才能使其正常工作?
答案 0 :(得分:1)
看起来,你不能简单地通过向它提供新的options
对象来重新配置已经初始化的模态。这意味着如果您执行以下操作:
$('#help').modal({
keyboard: false
});
$('#help').modal({
keyboard: true
});
...比后者的声明没有任何效果。
所以,为了克服这个问题,我建议销毁第一个模态 - 带有keyboard: false
的模态 - 并创建一个新的模态来监听键盘事件。
检查下面的工作代码段
注意:第一个模态是在使用keyboard: false
的代码的pageload中创建的,而按钮启动的连续模式是使用默认值设置的,因此使用keyboard: true
。
// } else {
// show the help modal
$('#help').modal({
keyboard: false
});
// Note the `one` binding
$('#help').one('hidden.bs.modal', function (event) {
$('#help').modal('dispose');
});
// }

<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#help">
Open Help
</button>
<div id="help" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">HELP</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>This is the Help modal</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script>
&#13;