Как исправить jQuery ("# ​​contact_form"). Validate не является функцией? - PullRequest
0 голосов
/ 17 июня 2019

На нашем сайте используется тема WordPress divi, и у нас есть контактная форма, которая использует jquery validation

custom.js

jQuery(document).ready(function() {
    var contactForm = jQuery("#contact_form");

    contactForm.validate({
        rules: {
            full_name: {required:true, maxlength:100},
            email: {required:true, validateEmail: true},
            phone_number: {required:true}
        },
        submitHandler: function(form evt) {
            evt.preventDefault();
            var fullName = jQuery('#full_name').val();
            var email = jQuery('#email').val();
            var phoneNumber = jQuery('#phone_number').val();
            var contactFormUrl = contactForm.attr('action');

            jQuery.ajax({
                type: "POST",
                url: contactFormUrl,
                cache: false,
                data: {
                    fullname: fullName,
                    email: email,
                    phonenumber: phoneNumber
                }
            }).done(function(data, textStatus, jqXHR) {
                console.log("Success");
            }).fail(function(jqXHR, textStatus, errorThrown) {
                console.log("Fail")
            });

        }
    });

});

Мы минимизируем наш custom.js в custom.min.js. Когда я смотрю наш сайт на консоли, это то, что я вижу:

Uncaught TypeError: e.validate is not a function
    at HTMLDocument.<anonymous> (custom.min.js?ver=1:1)
    at i (jquery.js?ver=1.12.4:2)
    at Object.fireWith [as resolveWith] (jquery.js?ver=1.12.4:2)
    at Function.ready (jquery.js?ver=1.12.4:2)
    at HTMLDocument.K (jquery.js?ver=1.12.4:2)

Порядок скриптов, загружаемых в DOM:

<script type='text/javascript' src='/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script>
    <script type='text/javascript' async='async' src='/divi-child/scripts/jquery.validate.min.js?ver=1'></script>
    <script type='text/javascript' defer='defer' src='/divi-child/scripts/v3/custom.min.js?ver=1'></script>

Знаете, как можно это решить? Любая помощь очень ценится. Спасибо

1 Ответ

0 голосов
/ 17 июня 2019

Измените ваш код следующим образом:

<script type='text/javascript' src='/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script>
<script type='text/javascript' src='/divi-child/scripts/jquery.validate.min.js?ver=1'></script>
<script type='text/javascript' src='/divi-child/scripts/v3/custom.min.js?ver=1'></script>

Также можете ли вы указать здесь содержимое папки скриптов? потому что есть 'v3' используется в cutom.min.js, но не для других двух js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...