Categories
Attributes
Price Range
  • Scegli Questo prodotto ha più varianti. Le opzioni possono essere scelte nella pagina del prodotto

    Comunicazione Inizio Lavori

Cart (0 items)

Crea un account

Shopping cart0
There are no products in the cart!
Continua a fare acquisti
0
Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
Click outside to hide the comparison bar
Compare
Cerca Soluzioni
×
. */ (function () { if (window.__azQtyCaptureInstalled) return; window.__azQtyCaptureInstalled = true; function findQtyInput(btn) { var wrap = btn.closest('.quantity-form, .quantity, .quantity-wrap'); var input = wrap ? wrap.querySelector('input.qty, input[name="quantity"]') : null; if (!input) { var p = btn.closest('form, .product, .woocommerce-product-inner'); input = p ? p.querySelector('input.qty, input[name="quantity"]') : null; } return input; } function syncAddToCart(btn, val) { var prod = btn.closest('.product, .woocommerce-product-inner'); var atc = prod ? prod.querySelector('.add_to_cart_button') : null; if (atc) atc.setAttribute('data-quantity', val); var cartForm = btn.closest('.woocommerce-cart-form'); if (cartForm) { var upd = cartForm.querySelector('.actions .button'); if (upd) upd.removeAttribute('disabled'); } } document.addEventListener('click', function (e) { if (!e.target || !e.target.closest) return; var up = e.target.closest('.quantity-action--up'); var down = e.target.closest('.quantity-action--down'); if (!up && !down) return; // Blocca TUTTI gli handler del tema su questo click. e.stopImmediatePropagation(); e.stopPropagation(); e.preventDefault(); var btn = up || down; var input = findQtyInput(btn); if (!input) return; var step = parseFloat(input.getAttribute('step')) || 1; var cur = parseFloat(input.value) || 0; var next; if (up) { var maxAttr = input.getAttribute('max'); var max = (maxAttr !== null && maxAttr !== '') ? parseFloat(maxAttr) : Infinity; next = cur + step; if (next > max) next = max; } else { var minAttr = input.getAttribute('min'); var min = (minAttr !== null && minAttr !== '') ? parseFloat(minAttr) : 1; next = cur - step; if (next < min) next = min; } input.value = next; input.dispatchEvent(new Event('change', { bubbles: true })); syncAddToCart(btn, next); }, true); // true = fase di capturing (prima del tema) })();