我有woocommerce,单产品页面,有两种变体的变分产品。如果其中一些(或无)未被选中,则“添加到购物车”按钮将被禁用,并且我会收到一条带有此消息的警报。据我所知,这是一个功能,用于将商业添加到购物车验证。我需要禁用警报消息,并在购物车数量和添加到购物车按钮之前显示此错误消息。据我所知,这是一个“添加到购物车”按钮之前的woocommerce\u。我该怎么做?
我找到了一些关于如何自定义行为的解决方案,但我没有找到如何隐藏警报消息。
使现代化
我说的是JS警报,当你按下“添加到购物车”按钮时,它会出现,但变化形式无效。例如,我有一个产品的大小和颜色。我选择了颜色,但忘了选择尺寸。“添加到购物车”按钮被禁用,如果我按下它,JS警报将显示消息,提示我需要完成表单。我想隐藏这个JS警报弹出窗口,并在添加到购物车按钮块之前放置自定义错误消息。
我进一步调查了这个问题,发现这个警报来自/woocommerce/assets/js/frontend/add to cart variation。js
我找到了这个函数
VariationForm.prototype.onAddToCart = function( event ) {
if ( $( this ).is('.disabled') ) {
event.preventDefault();
if ( $( this ).is('.wc-variation-is-unavailable') ) {
window.alert( wc_add_to_cart_variation_params.i18n_unavailable_text );
} else if ( $( this ).is('.wc-variation-selection-needed') ) {
window.alert( wc_add_to_cart_variation_params.i18n_make_a_selection_text );
}
}
};
第二个是当前警报。所以我决定不重写这个原型,而是使用更简单的解决方案。我已经在单个产品的元位置上有了一个自定义表单。
<script type="text/javascript">
jQuery( function($){
$( '<span id="show_error">Please, fill all options!</span>' ).insertBefore( ".single_variation_wrap" );
$('#show_error').hide();
...........
$('.single_add_to_cart_button').on('click',function(e){
if ( $( this ).is('.disabled') ) {
e.preventDefault();
if ( $( this ).is('.wc-variation-selection-needed') ) {
$('#show_error').show();
setTimeout(function () {
$('#show_error').hide();
}, 3000);
return false;
}
}
});
});
</script>
所以我为错误消息添加了自定义span块,现在,如果我忘记填写表单中的所有选项,错误消息会出现三秒。这不是最好的解决方案,但效果非常好!