模态每个用户弹出一次

时间:2018-01-18 17:31:29

标签: javascript twitter-bootstrap bootstrap-modal bootstrap-4 jquery-cookie

在我的网站中,我使用的是一个简单的模态弹出窗口,其中包含一些输入控件(名称,电子邮件,按钮)。 模态弹出窗口的目的是:

  • 填写所有必填字段后,如果用户按"提交"按钮,他们将获得一个.pdf文件。
  • 我在onload上启动模态。

在这里,我正在尝试:

  1. 仅为用户打开模式弹出窗口,或
  2. 不想向之前已填写表单的用户显示模式弹出窗口
  3. 以下是我的模态弹出窗口的代码:

    
    
    <script type="text/javascript">
    $(document).ready(function () {
        $("#eBookModal").modal('show');
    });
    </script>
    &#13;
    <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">&times;</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>
    &#13;
    &#13;
    &#13;

2 个答案:

答案 0 :(得分:0)

您必须记录模态显示。要存储该信息,您可以使用cookielocalStorage。根据存储的值,您可以决定是否显示模态。

以下示例使用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')即可。

答案 1 :(得分:0)

如果您只是第一次显示模态,而以前的代码不起作用,请尝试此!

$(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);
}

});  
相关问题