Bonjour,
ça fait 2 jours que j’essaye de coder la possibilité d’ajout par 2 et diminution par 2 d’un produit dans le panier.
Je veux que sur la fiche produit, le quantity selector commence à 2 (réussi), que quand on clique sur “+” ça augmente de 2 (réussi), que quand on clique sur “-” ça diminue par 2 (réussi), mais que l’on ne puisse pas cliquer sur “-” si la quantité est 2, ou que l’on ne puisse pas descendre sous 2… Et là je bloque…
Voici mon code, merci de votre aide:
{% when 'quantity_selector' %}
{% if product.tags contains 'Liquidation' and product.type contains 'Chaise' %}
<div class="ProductForm__QuantitySelector" {{ block.shopify_attributes }}>
{% if block.settings.show_label %}
<span class="ProductForm__Label">{{ 'product.form.quantity' | t }}:</span>
{% endif %}
<div class="QuantitySelector QuantitySelector--large">
<button type="button" class="QuantitySelector__Button Link Link--secondary" data-action="decrease-quantity" disabled>{% render 'icon' with 'minus' %}</button>
<input type="text" id="quantity-input" class="QuantitySelector__CurrentQuantity" pattern="[0-9]*" name="quantity" value="2" aria-label="{{ 'product.form.quantity' | t }}">
<button type="button" class="QuantitySelector__Button Link Link--secondary" data-action="increase-quantity">{% render 'icon' with 'plus' %}</button>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const decreaseButton = document.querySelector('[data-action="decrease-quantity"]');
const increaseButton = document.querySelector('[data-action="increase-quantity"]');
const quantityInput = document.getElementById('quantity-input');
const updateDecreaseButtonState = () => {
decreaseButton.disabled = parseInt(quantityInput.value) === 2;
};
// Mise à jour initiale de l'état du bouton de diminution
updateDecreaseButtonState();
decreaseButton.addEventListener('click', function() {
let quantity = parseInt(quantityInput.value);
if (quantity > 2) {
quantity -= 1;
quantityInput.value = quantity;
} else {
quantity -= 0;
quantityInput.value = quantity;
}
updateDecreaseButtonState();
});
increaseButton.addEventListener('click', function() {
let quantity = parseInt(quantityInput.value);
quantity += 1;
quantityInput.value = quantity;
updateDecreaseButtonState();
});
quantityInput.addEventListener('change', function() {
let quantity = parseInt(this.value);
if (isNaN(quantity) || quantity < 2) {
this.value = 2;
} else if (quantity % 2 !== 0) {
this.value = quantity + (2 - quantity % 2);
}
updateDecreaseButtonState();
});
});
</script>