Задать вопрос
@greedy_wizard

WooCommerce Custom Quantity with variations?

Я пытался использовать JS-код для пользовательского количества с вариациями для WC.
При изменении вариаций - количество работает неправильно
Ошибка шаг или значение
Возможно причина в событии "show_variation"

Ссылка на тестовую страницу

Пожалуйста, помогите мне найти и исправить ошибки в этом коде
PHP
<div class="quantity-button quantity-down">&minus;</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">&plus;</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()
})
  • Вопрос задан
  • 54 просмотра
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы