Javascript 在 Woocommerce 结账事件上执行函数
Javascript execute function on Woocommerce checkout event
我需要等待结帐在账单国家更改后更新,然后我才能 运行 在 Woocommerce 上进行一些 AJAX 调用。
jQuery('select#billing_country').change(function(){
$( document.body ).on( 'updated_checkout', function( e, data ) {
//AJAX calls here
});
});
问题是其中一些调用也会更新结帐,这会导致无限循环。
每次更改帐单国家/地区时,有没有办法只等待结帐更新一次(仅第一次)?所以像这样:
jQuery('select#billing_country').change(function(){
$when.firsttime( 'updated_checkout', function( e, data ) {
//AJAX calls here
});
});
谢谢!
由于 updated_checkout
事件,以下功能仅在结帐更新后执行一次。
因此:
#billing_country
字段已更改
- 执行 AJAX
update_checkout
(不是“更新”)调用以更新购物车
- 结帐更新后(使用
updated_checkout
事件)自定义 AJAX 调用(仅当 checkout_is_updated
变量是错误的)。
每次更新整个页面时,checkout_is_updated
变量都会初始化为“false”。
// executes one or more instructions only once after checkout has been updated
jQuery( function($) {
// set a control variable
var checkout_is_updated = false;
// if the "#billing_country" field changes, update the checkout
$('form.checkout').on('change', '#billing_country', function(){
$(document.body).trigger('update_checkout');
// after the checkout has been updated
$( document.body ).on( 'updated_checkout', function(){
// just once
if ( checkout_is_updated == false ) {
/*
* AJAX calls here
*/
checkout_is_updated = true;
}
});
});
});
代码已经过测试并且有效。
我需要等待结帐在账单国家更改后更新,然后我才能 运行 在 Woocommerce 上进行一些 AJAX 调用。
jQuery('select#billing_country').change(function(){
$( document.body ).on( 'updated_checkout', function( e, data ) {
//AJAX calls here
});
});
问题是其中一些调用也会更新结帐,这会导致无限循环。 每次更改帐单国家/地区时,有没有办法只等待结帐更新一次(仅第一次)?所以像这样:
jQuery('select#billing_country').change(function(){
$when.firsttime( 'updated_checkout', function( e, data ) {
//AJAX calls here
});
});
谢谢!
由于 updated_checkout
事件,以下功能仅在结帐更新后执行一次。
因此:
#billing_country
字段已更改- 执行 AJAX
update_checkout
(不是“更新”)调用以更新购物车 - 结帐更新后(使用
updated_checkout
事件)自定义 AJAX 调用(仅当checkout_is_updated
变量是错误的)。
每次更新整个页面时,checkout_is_updated
变量都会初始化为“false”。
// executes one or more instructions only once after checkout has been updated
jQuery( function($) {
// set a control variable
var checkout_is_updated = false;
// if the "#billing_country" field changes, update the checkout
$('form.checkout').on('change', '#billing_country', function(){
$(document.body).trigger('update_checkout');
// after the checkout has been updated
$( document.body ).on( 'updated_checkout', function(){
// just once
if ( checkout_is_updated == false ) {
/*
* AJAX calls here
*/
checkout_is_updated = true;
}
});
});
});
代码已经过测试并且有效。