Я пытался использовать JS-код для пользовательского количества с вариациями для WC.
При изменении вариаций - количество работает неправильно
Ошибка шаг или значение
Возможно причина в событии "show_variation"
Ссылка на тестовую страницу
Пожалуйста, помогите мне найти и исправить ошибки в этом коде
PHP
<div class="quantity-button quantity-down">−</div>
<input
type="number"
id="<?php echo esc_attr( $input_id ); ?>"
class="<?php echo esc_attr( join( ' ', (array) $classes ) ); ?>"
step="<?php echo esc_attr( $step ); ?>"
min="<?php echo esc_attr( $min_value ); ?>"
max="<?php echo esc_attr( 0 < $max_value ? $max_value : 1 ); ?>"
name="<?php echo esc_attr( $input_name ); ?>"
value="<?php echo esc_attr( $input_value ); ?>"
size="4"
placeholder="<?php echo esc_attr( $placeholder ); ?>"
inputmode="<?php echo esc_attr( $inputmode ); ?>"
autocomplete="<?php echo esc_attr( isset( $autocomplete ) ? $autocomplete : 'on' ); ?>"
/>
<div class="quantity-button quantity-up">+</div>
JS
var quantityCustom = () => {
jQuery(".quantity").each(function () {
var quantity = jQuery(this),
input = quantity.find('input[type="number"]'),
btnUp = quantity.find(".quantity-up"),
btnDown = quantity.find(".quantity-down"),
min = input.attr("min") !== '' ? Number(input.attr("min")) : 0,
max = input.attr("max") !== '' ? Number(input.attr("max")) : 999,
oldValue = parseFloat(input.val());
btnUp.click(function (e) {
e.preventDefault()
if (oldValue >= max) {
var newVal = oldValue;
} else {
var newVal = oldValue + 1;
}
input.val(newVal);
input.trigger("change");
});
btnDown.click(function (e) {
e.preventDefault()
if (oldValue <= min) {
var newVal = oldValue;
} else {
var newVal = oldValue - 1;
}
input.val(newVal);
input.trigger("change");
});
})
}
$(document).on('show_variation', function (e, variation) {
quantityCustom()
})