【问题标题】:Custom JavaScript in WordPress Contact Form 7 not workingWordPress 联系表 7 中的自定义 JavaScript 不起作用
【发布时间】:2017-05-24 09:55:44
【问题描述】:

我试图在通过验证并提交后隐藏联系表单。我想用一个简单的自定义 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>');
    }

});

Contact Form 7 设置(附加设置选项卡)

on_sent_ok: "contactFormHide()"

我做错了什么,我该如何纠正?

【问题讨论】:

    标签: jquery wordpress contact-form-7


    【解决方案1】:

    Ahmed Ginani 的解决方案可能会奏效,但您是否也尝试过在完全独立的函数中将 $ 作为参数传递,如下所示:

    (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。这意味着我们可以在函数内本地使用$,而不会与其他脚本/框架/库等冲突......

    【讨论】:

    • 有趣的是,这在另一个非 WP 同类问题(冲突 *.js)中对我有用。但是,这里错误仍然存​​在。 :\
    【解决方案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>');
            }
    

    【讨论】:

    • 抱歉,回答迟了。我尝试将 $ 作为函数的参数传递,但错误仍然存​​在。
    • 控制台中的错误是什么?你能把那个错误放在这里吗?
    • 当然。它是TypeError: contactFormHide is undefined。问题是 - custom.js 包含正确,我可以在页面的编译源代码中看到它。当我打开它时,果然,功能就在那里。我不知道为什么 WP 没有看到它。
    • 再次抱歉,这么长时间才回复。现在错误不同了 - $ 未定义。
    猜你喜欢
    • 2012-09-05
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2015-06-20
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    相关资源
    最近更新 更多