Перебрать и сложить данные из select
Здравствуйте. Помогите сложить или вычти данные из select.
<h2>3450 грн.</h2>
<div class="form-group required">
<label class="control-label" for="input-option227">Слово</label>
<select name="option[227]" id="input-option227" class="form-control">
<option value="17">слово 1</option>
<option value="18">слово 2(+200 грн.)</option>
<option value="19">слово3(+300 грн.)</option>
</select>
</div>
<div class="form-group required">
<label class="control-label" for="input-option227">Слово</label>
<select name="option[227]" id="input-option227" class="form-control">
<option value="17">слово 1</option>
<option value="18">слово 2(-150 грн.)</option>
<option value="19">слово3(+300 грн.)</option>
<option value="19">слово3(-300 грн.)</option>
</select>
</div>
Нужно узнать стоит плюс или минус,что б знать что делать с числами. Ну и естественно сложить или вычитать ,и конечную сумму добавить к сумме в H2. С одним полем и сложением сделал как то сам.Но понадобилось сделать несколько полей выбора и в некоторых добавить вычитание.
if($("select").is(".form-control")){
var strpriceval = $(".list-unstyled h2").text();
var strpricevale = strpriceval.slice(0,-5);
$("select.form-control").change(function () {
var stroptionval = "";
$("select.form-control option:selected").each(function(){
stroptionval += $( this ).text() + " ";
});
if(stroptionval.lastIndexOf(")")>=0){
var pricepl = stroptionval.substring(stroptionval.lastIndexOf("(")+2,stroptionval.lastIndexOf(")")-5);
var fu=Number(pricepl)+Number(strpricevale);
$(".list-unstyled h2").text(fu+" грн.");
}else {
$(".list-unstyled h2").text(strpricevale+" грн.");
}
}).change();
}
Это то,что смог придумать.Для одного поля |
<html>
<head>
</head>
<body>
</body>
<h2>3450 грн.</h2>
<div class="form-group required">
<label class="control-label" for="input-option227">Слово</label>
<select name="option[227]" id="input-option227" class="form-control">
<option value="17">слово 1</option>
<option value="18">слово 2(+200 грн.)</option>
<option value="19">слово3(+300 грн.)</option>
</select>
</div>
<div class="form-group required">
<label class="control-label" for="input-option227">Слово</label>
<select name="option[227]" id="input-option227" class="form-control">
<option value="17">слово 1</option>
<option value="18">слово 2(-150 грн.)</option>
<option value="19">слово3(+300 грн.)</option>
<option value="19">слово3(-300 грн.)</option>
</select>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
var x = parseFloat($('h2').text());
$('.form-control').change(function(){
var sum = x;
$('.form-control').find('option:selected').each(function(){
sum += parseFloat($(this).text().substr($(this).text().indexOf('(')+1))||0;
});
$('h2').text(sum+' грн.');
})
</script>
</html>
Чтобы в дальнейшем не возникало гемора, цифры которые складывать лучше хранить в value или data атрибуте отдельно, а не в тексте. id должны быть уникальные. |
Это движок так генерирует (((
|
j0hnik,
Спасибо огромное. |
| Часовой пояс GMT +3, время: 15:21. |