В WordPress Woocommerce корзина покупок получает refre sh с AJAX, и я использую скрипт для реализации <b>+/-</b>
кнопок в поле количества. <br><br>
После перезагрузки тележка с AJAX функция больше не влияет на тележку, потому что элементы перезагружены. <br><br>
Чтобы предотвратить это, я использовал ajaxComplete
в качестве триггера для перезагрузки функции, но при этом и Я нажимаю кнопку +
, поле ввода увеличивается в 5 раз. <br> <br>
Отладка с предупреждением показывает, что инкремент запускается 5 раз с помощью +1
, а не добавления 5.
Возможно, вы видите проблему:
jQuery(document).on("ready ajaxComplete",function($){
function quantityPlusMinus() {
function releaseUpdateCartButton() {
if (jQuery( "input[name='update_cart']" ).length) {
if (jQuery( "input[name='update_cart']" ).is(':disabled')) {
jQuery( "input[name='update_cart']" ).prop("disabled", false);
}
}
}
jQuery('div.quantity').on( 'click', '.plus, .minus', function() {
var qty = jQuery( this ).closest( 'div.quantity' ).find( '.qty' );
var val = parseFloat(qty.val());
var max = parseFloat(qty.attr( 'max' ));
var min = parseFloat(qty.attr( 'min' ));
var step = parseFloat(qty.attr( 'step' ));
// Change the value if plus or minus
if ( jQuery( this ).is( '.plus' ) ) {
if ( max && ( max <= val ) ) {
qty.val( max ).change();
} else {
qty.val( val + step ).change();
releaseUpdateCartButton();
}
} else {
if ( min && ( min >= val ) ) {
qty.val( min ).change();
} else if ( val > 1 ) {
qty.val( val - step ).change();
releaseUpdateCartButton();
}
}
});
}
quantityPlusMinus();
});