WooCommerce:变更后触发事件

时间:2014-06-18 07:32:23

标签: javascript woocommerce variations

我们使用Woocommerce销售彩盒。 通常选择变量产品选项。

我们添加了一个带调色板的模态对话框,客户可以从中选择颜色。 这是woocommerce常见的下拉列表。

问题是,当我将正确的SlugValue传递给下拉列表(从调色板中选择之后)后,下拉列表中的值是正确的,但是发布价格需要触发的事件不起作用。 / p>

我已经尝试触发下拉菜单的onchange事件,但没有任何事情发生。

有人可以告诉我,需要触发哪个事件,以及如何触发?

aprec任何帮助!

3 个答案:

答案 0 :(得分:79)

如果将来有人偶然发现这种情况: WooCommerce在add-to-cart-variation.js中提供触发器,允许您连接到网站的更改事件。您可以在该文件中找到所有这些文件,但在这种情况下可能会帮助最多的文件可以这样使用

$( ".variations_form" ).on( "woocommerce_variation_select_change", function () {
    // Fires whenever variation selects are changed
} );

$( ".single_variation_wrap" ).on( "show_variation", function ( event, variation ) {
    // Fired when the user selects all the required dropdowns / attributes
    // and a final variation is selected / shown
} );

您要挂钩的触发器是.on()内的第一个参数。以下是一些可以帮助您入门的内容:

woocommerce_variation_select_change更改选择时触发。

show_variation在找到变体时会被触发,并且会实际传递找到的变体对象,这样您就可以直接访问价格,而无需手动过滤选择。

你可以筛选并找到其余的here

答案 1 :(得分:2)

此代码执行初始问题中所要求的确切功能:

$('#WC_variation_drop_down_ID').trigger('change');

将'#WC_variation_drop_down_ID'更改为您使用jQuery更改的字段的实际ID。

这是一个更完整的解决方案,包括设置字段以及触发WooCommerce变体选择(基于单选按钮字段类数组):

var fields = ['.gchoice_4_11_0', '.gchoice_4_11_1', '.gchoice_4_4_0', '.gchoice_4_4_1'];
for ( var i = fields.length; i--; ) {
    $('#gravity_form_wrapper_ID').on('click', fields[i], function() {
        $('#WC_variation_drop_down_ID').val( $(this).children('input').val() ).trigger('change');
    });
}

setting WooCommerce Variation Fields帖子启发的解决方案。

答案 2 :(得分:0)

如果有人像我一样来这里找到答案,我将在此提供澄清。

实现更改功能时遇到问题,因为我们需要知道所选变化的价格,但是“ woocommerce_variation_select_change”是从先前变化中获取的价格。

因此,如果要在更改完成后获得变化的价格,则必须使用“ woocommerce_variation_has_changed” jQuery函数。

示例:

jQuery('#select_attribute_of_variation').on('woocommerce_variation_has_changed', function(){ // do your magic here... })