Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

302
Vistas
Dropbox value is nott adding meanwhile checkbox value is adding and showing in html

I need help. (.wc-pao-addon-select) is a dropbox and it has a price in (data-price). But it's not adding and showing in (.price). Meanwhile checkbox is working fine

<script>
    $=jQuery;

var fefaultprice = "<?php echo $product->get_price(); ?>";
var currencysyb = "<?php echo get_woocommerce_currency_symbol(); ?>";
$(".wc-pao-addon-checkbox").on("change",function(){
var selected = [fefaultprice];
$(".wc-pao-addon-checkbox:checked").each(function () {
selected.push($(this).attr("data-price"));
});
$(".wc-pao-addon-select:selected").each(function () {
selected.push($(this).attr("data-price"));
});
sum = 0;
$.each(selected,function(){sum+=parseFloat(this) || 0; });
$(".price").html('<span class="woocommerce-Price-amount amount"><bdi>'+sum.toFixed(2)+'<span class="woocommerce-Price-currencySymbol">'+currencysyb+'</span></bdi></span>');
});
</script>
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

  • You don't need jQuery
  • When using classes make always sure to reference to a target parent - that way it will not mater if you have one or hundreds of such elements on your page
  • Echo your price and currency in a parent wrapper data-* attributes, not in JS.
  • Most of the other issues are mentioned in the comments below your Question

Here's a remake of your Item amount calculator in pure JavaScript:

const EL = (sel, parent) => (parent||document).querySelector(sel);
const ELS = (sel, parent) => (parent||document).querySelectorAll(sel);

const calcItemInit = (EL_item) => {
  // Get elements
  const ELS_ckb = ELS(".wc-pao-addon-checkbox", EL_item);
  const ELS_sel = ELS(".wc-pao-addon-select", EL_item);
  const EL_amount = EL(".woocommerce-Price-amount", EL_item);
  const EL_currency = EL(".woocommerce-Price-currencySymbol", EL_item);
  
  // Get data
  const price = parseFloat(EL_item.dataset.price);
  const currency = EL_item.dataset.currency;
  
  // Calc
  const calc = () => {
    let amount = price || 0;
    
    // Add checkboxes values
    ELS_ckb.forEach(el => {
      if (el.checked) amount += parseFloat(el.value);
    });
    
    // Add select values
    ELS_sel.forEach(el => {
      amount += parseFloat(el.value || 0);
    });
    
    // Set Amount!
    EL_amount.textContent = amount.toFixed(2);
    EL_currency.textContent = currency;
  };
  
  // Events:
  ELS_ckb.forEach(el => el.addEventListener("change", calc));
  ELS_sel.forEach(el => el.addEventListener("change", calc));
  
  // Init:
  calc();
};

ELS(".calc").forEach(calcItemInit);
<div class="calc" data-currency="€" data-price="12.00">
  <div>Item: <b>JS Book Of The Year</b></div>
  <div>Price: <b>12.00 €</b></div>
  <div>Extras:
    <label><input type="checkbox" class="wc-pao-addon-checkbox" value="3.99"> + Book cover</label>
    <label><input type="checkbox" class="wc-pao-addon-checkbox" value="14.00"> + All pages</label>
    <label>
      <select class="wc-pao-addon-select">
        <option value="29.99" selected>One year old</option>
        <option value="10.25">Two years old</option>
        <option value="10.15">Ten years old</option>
      </select>
    </label>
  </div>
  <div>
    Final price: 
    <span class="woocommerce-Price-amount"></span>
    <span class="woocommerce-Price-currencySymbol"></span>
  </div>
</div>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda