Я пытаюсь подвести некоторые значения из нескольких selectboxes. Проблема в том, что параметры содержат как текст, так и числа. Мне нужны только цифры и суммировать их. Другого способа это не сделать. Так что я попытался удалить текст из строки, а затем обновить сумму каждый раз, когда изменяется selectbox. Теперь результат всегда неправильный.Суммировать значения нескольких selectboxes
Другая проблема заключается в том, что иногда перед номером (-ами) появляется символ минуса. Есть ли способ извлечь это из общей суммы? Вот пример в третьем selectbox в Fiddle.
Может ли кто-нибудь помочь в этом? Я создал Fiddle here
HTML
<form method="post" id="product_configure_form" action="cart/add/14161745">
<div class="product-info-options tui">
<input type="hidden" value="" id="product_configure_bundle_id" name="bundle_id">
<div class="product-configure">
<div class="product-configure-custom">
<div class="product-configure-custom-option">
<label for="product_configure_custom_604623">Stoffering: <em>*</em>
</label>
<select id="product_configure_custom_604623" name="custom[604623]">
<option selected="selected" disabled="disabled" value="">Maak een keuze...</option>
<option value="5217777">Camira 24/7 *snellever - 2 weken</option>
<option value="5217779">Staccato *snellever - 2 weken (+€27,00)</option>
<option value="5217781">Leer 1 Trento *snellever - 2 weken (+€85,00)</option>
<option value="5217783">Leer 2 Litano (+€172,00)</option>
</select>
<div class="product-configure-clear"></div>
</div>
<div class="product-configure-custom-option">
<label for="product_configure_custom_603895">Armlegger frame kleur: <em>*</em>
</label>
<select id="product_configure_custom_603895" name="custom[603895]">
<option selected="selected" disabled="disabled" value="">Maak een keuze...</option>
<option value="5217785">zwart gecoat</option>
<option value="5217787">aluminium gecoat (+€11,00)</option>
<option value="5217789">aluminium gepolijst (+€11,00)</option>
<option value="5217791">verchroomd (+€53,00)</option>
</select>
<div class="product-configure-clear"></div>
</div>
etc............
Jquery
function update_amounts() {
var sum = 0.0;
$('#product_configure_form .product-configure-custom-option select').each(function() {
var price = $(this).find('option:selected').text();
var priceClean = price.replace(/[^0-9]/g, '');
priceClean = parseFloat(priceClean) || 0;
sum += priceClean;
});
$('#amount').text('€' + sum.toFixed(2));
}
$("#product_configure_form .product-configure-custom-option select").change(function() {
update_amounts();
});
Поместите номер в атрибут 'value' и используйте это, а не текст. – Barmar
Можете ли вы рассказать о том, почему «нет другого способа сделать это»? Каковы ограничения? – Fiddles