我们使用Woocommerce销售彩盒。 通常选择变量产品选项。
我们添加了一个带调色板的模态对话框,客户可以从中选择颜色。 这是woocommerce常见的下拉列表。
问题是,当我将正确的SlugValue传递给下拉列表(从调色板中选择之后)后,下拉列表中的值是正确的,但是发布价格需要触发的事件不起作用。 / p>
我已经尝试触发下拉菜单的onchange
事件,但没有任何事情发生。
有人可以告诉我,需要触发哪个事件,以及如何触发?
aprec任何帮助!
答案 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...
})