bugfix> javascript > 投稿

関数onloadでjqueryポップアップを1回だけ表示する必要があります。これは、window.onload関数の遅延を伴う私のポップアップで、addclass is-visibleですが、cookie関数を追加して、ポップアップがブラウザまたはキャッシュごとに1回だけロードされるようにしています。

どんな提案でも素晴らしいでしょう! -Jクエリとコード内のHTML

   jQuery(document).ready(function($){
  window.onload = function (){
    jQuery(".bts-popup").delay(1000).addClass('is-visible');
    }
    //open popup
    jQuery('.bts-popup-trigger').on('click', function(event){
        event.preventDefault();
        jQuery('.bts-popup').addClass('is-visible');
    });
    //close popup
    jQuery('.bts-popup').on('click', function(event){
        if( jQuery(event.target).is('.bts-popup-close') || jQuery(event.target).is('.bts-popup') ) {
            event.preventDefault();
            jQuery(this).removeClass('is-visible');
        }
    });
    //close popup when clicking the esc keyboard button
    jQuery(document).keyup(function(event){
        if(event.which=='27'){
            jQuery('.bts-popup').removeClass('is-visible');
        }
    });
});

  
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="bts-popup" role="alert">
        <div class="bts-popup-container">
            <div id="contact-form">
                    <form method="post" action="">
                        <input type="hidden" name="form_uid" value="e880e632-8e7c-4b51-8928-b63cd1b6cdb5">
                        <ul>
                            <li class="namefield">
                                <input name="name" type="text" class="name" placeholder="Your Name">
                            </li>
                            <li class="emailfield">
                                <input name="submit_by" type="text" class="email-contact" placeholder="Your Email">
                            </li>
                            <li class="telfield">
                                <input name="telephone" type="text" class="phone" placeholder="Contact Number">
                            </li>
                            <li class="commentsfield">
                                <textarea name="comments" class="query" placeholder="How Can We Help?"></textarea>
                            </li>
                            <li>
                            </li>
                            <li> 
                                <input name="submit-button" type="submit" value="Submit" class="submit">
                                <p class="gdpr-small">*By clicking ‘submit’ you are consenting to us replying, and storing your details. (see our <a href="">privacy policy</a>).</p>
                            </li>
                        </ul>
                        <input type="hidden" name="required" value="name,submit_by,telephone,comments">
                        <input type="hidden" name="data_order" value="name,submit_by,telephone,comments,marketing-opt-in">
                        <input type="HIDDEN" name="automessage" value="mymessage">
                        <input name="ok_url" type="hidden" value="">
                        <input name="not_ok_url" type="hidden" value="">
                    </form>
                </div>
            <a href="#0" class="bts-popup-close"><i class="fa fa-times-circle"></i></a>
        </div>
    </div>

回答 1 件
  • Cookieを簡単に管理する方法は、こちらをご覧ください

    私はそれは非常に簡単だと思います(擬似コード):

    if (getCookie("popup") doesnt exist OR is set to 0)
      showPopup();
      setCookie("popup",1);
    else
      destroyPopup();
    endif
    
    

    この簡単な方法を使用して、複数のpopoupsも処理できます。

    PHPを使用する場合、javascript関数の代わりに$_COOKIEを使用できます。

    それが役に立てば幸い。

あなたの答え