每个用户弹出一次模态
Modal pop up one time per user
在我的网站中,我使用带有一些输入控件(名称、电子邮件、按钮)的简单模式弹出窗口。
弹窗的目的是:
- 填写所有必填字段后,如果用户按 "submit" 按钮,他们将获得一个 .pdf 文件。
- 我在加载时启动模式。
在这里,我想做的是:
- 只为用户打开模式弹出窗口一次,或者
- 不想向之前已经填写过表单的用户显示模式弹出窗口
这是我的模态弹出窗口的代码:
<script type="text/javascript">
$(document).ready(function () {
$("#eBookModal").modal('show');
});
</script>
<div class="modal fade" id="eBookModal" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<div class="row">
<h4 class="modal-title text-center" style="color:#FFFFFF;">Download eBook</h4>
</div>
</div>
<div class="modal-body">
<form role="form" id="eBookform" class="contact-form"
action="file.pdf">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<input type="text" class="form-control form-text" name="FName" autocomplete="off" id="eBook_FName" placeholder="First Name" required>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="text" class="form-control form-text" name="LName" autocomplete="off" id="eBook_LName" placeholder="Last Name" required>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="email" class="form-control form-text" name="email" autocomplete="off" id="eBook_email" placeholder="E-mail" required>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 text-center" id="eBook_download">
<button type="submit" class="btn main-btn" style="color:#fff !important;">Download Now</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
您必须保留模态显示的记录。要存储该信息,您可以使用 cookie
or the localStorage
。根据存储的值,您可以决定是否显示模态。
下面的例子以localStorage
为例:
$(document).ready(function () {
// Check if user saw the modal
var key = 'hadModal',
hadModal = localStorage.getItem(key);
// Show the modal only if new user
if (!hadModal) {
$('#eBookModal').modal('show');
}
// If modal is displayed, store that in localStorage
$('#eBookModal').on('shown.bs.modal', function () {
localStorage.setItem(key, true);
})
});
也可以作为 Codepen 使用。
如果你想只对那些已经提交表单的人隐藏模式,你应该在表单提交时设置标志,如下所示:
$('#eBookform').on('submit', function (event) {
// event.preventDefault();// depending on your use case
localStorage.setItem(key, true);
})
注意:要重置存储值,只需调用localStorage.removeItem('hadModal')
。
如果您只是为了在第一次访问时显示一次模态,而之前的代码不起作用,请试试这个!
$(window).load(function(){
var Modal = document.getElementById('myModal');
var key = 'hadModal',
hadModal = localStorage.getItem(key);
if (!hadModal) {
Modal.style.display = "block";
localStorage.setItem(key, true);
}
});
如何在不使用 jQuery 的情况下使此脚本在 Bootstrap 5 中运行?
$(document).ready(function () {
// Check if user saw the modal
var key = 'hadModal',
hadModal = localStorage.getItem(key);
// Show the modal only if new user
if (!hadModal) {
$('#eBookModal').modal('show');
}
// If modal is displayed, store that in localStorage
$('#eBookModal').on('shown.bs.modal', function () {
localStorage.setItem(key, true);
})
});
在我的网站中,我使用带有一些输入控件(名称、电子邮件、按钮)的简单模式弹出窗口。 弹窗的目的是:
- 填写所有必填字段后,如果用户按 "submit" 按钮,他们将获得一个 .pdf 文件。
- 我在加载时启动模式。
在这里,我想做的是:
- 只为用户打开模式弹出窗口一次,或者
- 不想向之前已经填写过表单的用户显示模式弹出窗口
这是我的模态弹出窗口的代码:
<script type="text/javascript">
$(document).ready(function () {
$("#eBookModal").modal('show');
});
</script>
<div class="modal fade" id="eBookModal" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<div class="row">
<h4 class="modal-title text-center" style="color:#FFFFFF;">Download eBook</h4>
</div>
</div>
<div class="modal-body">
<form role="form" id="eBookform" class="contact-form"
action="file.pdf">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<input type="text" class="form-control form-text" name="FName" autocomplete="off" id="eBook_FName" placeholder="First Name" required>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="text" class="form-control form-text" name="LName" autocomplete="off" id="eBook_LName" placeholder="Last Name" required>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="email" class="form-control form-text" name="email" autocomplete="off" id="eBook_email" placeholder="E-mail" required>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 text-center" id="eBook_download">
<button type="submit" class="btn main-btn" style="color:#fff !important;">Download Now</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
您必须保留模态显示的记录。要存储该信息,您可以使用 cookie
or the localStorage
。根据存储的值,您可以决定是否显示模态。
下面的例子以localStorage
为例:
$(document).ready(function () {
// Check if user saw the modal
var key = 'hadModal',
hadModal = localStorage.getItem(key);
// Show the modal only if new user
if (!hadModal) {
$('#eBookModal').modal('show');
}
// If modal is displayed, store that in localStorage
$('#eBookModal').on('shown.bs.modal', function () {
localStorage.setItem(key, true);
})
});
也可以作为 Codepen 使用。
如果你想只对那些已经提交表单的人隐藏模式,你应该在表单提交时设置标志,如下所示:
$('#eBookform').on('submit', function (event) {
// event.preventDefault();// depending on your use case
localStorage.setItem(key, true);
})
注意:要重置存储值,只需调用localStorage.removeItem('hadModal')
。
如果您只是为了在第一次访问时显示一次模态,而之前的代码不起作用,请试试这个!
$(window).load(function(){
var Modal = document.getElementById('myModal');
var key = 'hadModal',
hadModal = localStorage.getItem(key);
if (!hadModal) {
Modal.style.display = "block";
localStorage.setItem(key, true);
}
});
如何在不使用 jQuery 的情况下使此脚本在 Bootstrap 5 中运行?
$(document).ready(function () {
// Check if user saw the modal
var key = 'hadModal',
hadModal = localStorage.getItem(key);
// Show the modal only if new user
if (!hadModal) {
$('#eBookModal').modal('show');
}
// If modal is displayed, store that in localStorage
$('#eBookModal').on('shown.bs.modal', function () {
localStorage.setItem(key, true);
})
});