1

I'm trying to automatically close the modal after submitting the data to Mailchimp. But that's where the above issue occurs. I tried several existing solutions here, but they didn't seem to fix the issue. I have firing bootstrap events but still no use. I have pasted below the modal with the mailchimp api code (I've hidden some parts for privacy concerns) with the external bootstrap and jquery links. Please help.

//functions.php 
    function front_page_popup() { ?>
      <!-- Modal -->
      <div id="newsletter" class="modal fade bd-example-modal-lg rounded-0 mt-3 pr-0" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg" role="document">
          <div class="modal-content">
            <div class="container pt-5 px-5 pb-0">
              <div class="d-flex justify-content-center mt-0">
                <i class="fas fa-lightbulb fa-3x"></i>
              </div>
              <div class="d-flex justify-content-center my-2">
                <h1 class="text-center"><strong>Subscribe for Weekly Goodies</strong></h1>
              </div>
              <div class="d-flex justify-content-center my-2">
                <p class="text-secondary text-center">Proven Strategies To Earn Online Straight To Your Inbox.</p>
              </div>
              <div class="d-flex justify-content-center my-4">
                <hr style="width: 75%; border-width: 2px;">
              </div>
              <div class="d-flex justify-content-center my-4">
                <img class="w-25 h-50 rounded-circle" src="https://d1aettbyeyfilo.cloudfront.net/yoursolutions/6999175_1576332391276Thomas_Edison.jpg" alt="thomas edison">
                <div class="d-flex flex-column bd-highlight my-auto ml-3">
                  <div class="p-2 bd-highlight">
                    <q><em class="text-secondary">Genius is one percent inspiration and ninety-nine percent perspiration.</em></q>
                  </div>
                  <div class="p-2 bd-highlight">
                    <p><strong>Thomas Edison</strong></p>
                  </div>
                </div>
              </div>
            </div>
            <div id="mc_embed_signup" class="container-fluid bg-light">
              <form action="{hid--for--privacy--reasons}" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" target="_blank" class="needs-validation" novalidate>
                <div class="form-row">
                  <div class="col">
                    <input type="text" name="FNAME" class="form-control form-control-lg mt-5 mb-2 mx-auto" style="width: 80%;" id="mce-FNAME" placeholder="First Name..." required>
                    <div class="invalid-feedback text-center">
                      Please provide your name.
                    </div>
                  </div>
                </div>
                <div class="form-row">
                  <div class="col mb-3">
                    <input type="email" name="EMAIL" class="form-control form-control-lg mt-3 mb-2 mx-auto" style="width: 80%;" id="mce-EMAIL" placeholder="Email Address..." required>
                    <div class="invalid-feedback text-center">
                      Please provide your email address.
                    </div>
                  </div>
                </div>
                <div id="mce-responses" class="clear">
                  <div class="text-center" id="mce-error-response" style="display:none; color: red;"></div>
                  <div class="text-center" id="mce-success-response" style="display:none; color: green;"></div>
                </div>
                <button id="mc-embedded-subscribe" class="btn btn-primary btn-lg btn-block mt-2 mb-5 mx-auto" style="width: 80%; background-color: #9661f3; border-color: #9661f3;" type="submit">
                  <strong>Subscribe Now</strong>
                </button>
              </form>
            <script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'>
            </script>
            <script type='text/javascript'>
            (function($) {
              window.fnames = new Array();
              window.ftypes = new Array();
              fnames[0]='EMAIL';
              ftypes[0]='email';
              fnames[1]='FNAME';
              ftypes[1]='text';
              $('#newsletter').modal('hide');
            }
            (jQuery));
              var $mcj = jQuery.noConflict(true);
              </script>
            <!--End mc_embed_signup-->
            </div>
          </div>
        </div>
      </div>

    <?php }
    add_filter('wp_footer', 'front_page_popup');

below is the external links

//External links in functions.php
wp_deregister_script('jquery');
wp_enqueue_script('jquery', 'https://code.jquery.com/jquery-3.4.1.slim.min.js', array(), null, true);
wp_enqueue_script('bootstrap-js', get_stylesheet_directory_uri() . '/js/bootstrap.min.js', array('jquery'), '4.4.1', true);

1 Answers1

2

Instead of

$('#newsletter').modal('hide');

I think you need

$('#newsletter.modal').hide();

Or even just

$('#newsletter').hide();

Andy Mardell
  • 1,132
  • 8
  • 13
  • I forgot to mention. The bootstrap validation kicks in after I submit the data. The modal doesn't close but the fields are cleared and bootstrap validation shows error for empty field. –  Jan 12 '20 at 17:41
  • Okay, any errors now? Because my answer should solve the error you asked about `Bootstrap Uncaught TypeError: $(…).modal is not a function` :) – Andy Mardell Jan 12 '20 at 17:50
  • Could you help me with hiding the modal on data submission, please? –  Jan 12 '20 at 18:10
  • This will probably help you: https://css-tricks.com/form-validation-part-4-validating-mailchimp-subscribe-form/#article-header-id-4 – Andy Mardell Jan 12 '20 at 20:29
  • 1
    Thank you. That helped a lot –  Jan 14 '20 at 15:41
  • 1
    You are a lifesaver. I couldn't find a solution for the modal is not a function error. and ta da! You're answer fixed it. – mponagandla Mar 10 '22 at 14:26