Пользовательский JavaScript в WordPress Contact Form 7 не работает

Я пытаюсь скрыть контактную форму после того, как она прошла проверку и отправлена. Я хочу сделать это с помощью простой пользовательской функции JavaScript.

Дело в том, что консоль постоянно сообщает мне, что моя функция JS не определена. Сначала я подумал, что это может произойти, потому что я неправильно ставлю *.js, но это не так - мой custom.js четко виден в исходном коде страницы, и его содержимое соответствует тому, что я поставил внутри.

Вот мой код до сих пор.

functions.php (дочерняя тема)

add_action( 'wp_enqueue_scripts', 'for_contact' );
function for_contact() {
    wp_enqueue_script(
        'contactFormHide',
        get_stylesheet_directory_uri() . '/custom.js',
        array('jquery')
    );
}

custom.js

var $j = jQuery.noConflict();

$j(document).ready(function() {
    "use strict";

    function contactFormHide (){
        $('.section_inner_margin').css('display','none');
        $('.section_inner').html('<div class="wpcf7-response-output wpcf7-display-none wpcf7-mail-sent-ok" style="display: block;" role="alert">Your message has been sent.</div>');
    }

});

Настройки формы контакта 7 (вкладка "Дополнительные настройки")

on_sent_ok: "contactFormHide()"

Что я делаю не так, и как я могу это исправить?

2 ответа

Исправление в коде. Определите $ в функции.

var $ = jQuery.noConflict();

function contactFormHide(){
            $('.section_inner_margin').css('display','none');
            $('.section_inner').html('<div class="wpcf7-response-output wpcf7-display-none wpcf7-mail-sent-ok" style="display: block;" role="alert">Your message has been sent.</div>');
        }

Решение Ахмеда Гинани, вероятно, сработает, но вы также пытались передать $ как параметр внутри полностью автономной функции следующим образом:

(function($) {
    $(document).ready(function() {
        "use strict";

        function contactFormHide (){
            $('.section_inner_margin').css('display','none');
            $('.section_inner').html('<div class="wpcf7-response-output wpcf7-display-none wpcf7-mail-sent-ok" style="display: block;" role="alert">Your message has been sent.</div>');
        }
    });
})(jQuery);

Таким образом, вы передаете jQuery объект в качестве аргумента function, Это означает, что мы можем использовать $ локально внутри функции без конфликта с другими скриптами / фреймворками / библиотеками и т. д...

Другие вопросы по тегам