Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WooCommerce签出页面中的淡出验证错误消息_Javascript_Php_Jquery_Woocommerce_Checkout - Fatal编程技术网

Javascript WooCommerce签出页面中的淡出验证错误消息

Javascript WooCommerce签出页面中的淡出验证错误消息,javascript,php,jquery,woocommerce,checkout,Javascript,Php,Jquery,Woocommerce,Checkout,下订单时,WooCommerce会验证所有必需的用户字段输入。如果没有,则会显示签出错误消息,如缺少名字等 我希望这些错误验证消息在给定时间后淡出 因此,我注入了jQuery代码: (function($) { var wooError = $('.woocommerce-error'); wooError.delay(4000).fadeOut(160); }) (jQuery); 只要.woocommerce error类不在form.checkout中,它就可以正常工作

下订单时,WooCommerce会验证所有必需的用户字段输入。如果没有,则会显示签出错误消息,如缺少名字等

我希望这些错误验证消息在给定时间后淡出

因此,我注入了jQuery代码:

(function($) {
    var wooError = $('.woocommerce-error'); 
    wooError.delay(4000).fadeOut(160);
})
(jQuery);
只要
.woocommerce error
类不在
form.checkout
中,它就可以正常工作,例如在登录或注册时。但它在结帐页面上不起作用

.woocommerce error
是正确的(它就在那里),但是淡出没有触发

于是,我继续在网上搜索。找到另一种方法,等待
checkout\u error
checkout page事件,如下所示:

$( document.body ).on( 'checkout_error', function(){
    var wooError = $('.woocommerce-error'); 
    wooError.delay(4000).fadeOut(160);
})
(jQuery);
但它不起作用

有人能告诉我,为什么只要
.woocommerce错误
类在结帐表单中,我就不能触发它消失


如何在签出错误验证消息时触发淡出?

使用
setTimeout()
而不是
delay()
尝试以下代码,该代码将淡出签出页面上的任何错误消息,延迟时间为4秒,持续时间为160毫秒:

// Checkout JS
add_action( 'wp_footer', 'checkout_fadeout_error_message');
function checkout_fadeout_error_message() {
    // Only on front-end and checkout page
    if( is_checkout() && ! is_wc_endpoint_url() ) :
    ?>
    <script>
    jQuery(function($){
        $(document.body).on( 'checkout_error', function(){
            var wooError = $('.woocommerce-error');
            setTimeout(function(){
                wooError.fadeOut(160);
            }, 4000);
        })
    });
    </script>
    <?php
    endif;
}
//签出JS
添加操作('wp_footer'、'checkout_fadeout_error_message');
函数签出\淡出\错误\消息(){
//仅在前端和签出页面上
如果(is_checkout()&&!is_wc_endpoint_url()):
?>
jQuery(函数($){
$(document.body).on('checkout\u error',function(){
var wooError=$('.woocommerce错误');
setTimeout(函数(){
衰减误差(160);
}, 4000);
})
});

最后我找到了方法。如果有人在找这个,下面是它的工作原理:

(function($) {
    $( document.body ).on( 'checkout_error', function(){
        var wooError = $('.woocommerce-error'); 
        wooError.delay(4000).fadeOut(160);
    })
})   
(jQuery);

经过13个小时的编码和一些你有时看不到明显的东西。

谢谢你,伙计。我会试试看。看起来比我接近时更舒服。