Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Перебрать и сложить данные из select (https://javascript.ru/forum/dom-window/70408-perebrat-i-slozhit-dannye-iz-select.html)

T3mkaa 03.09.2017 11:58

Перебрать и сложить данные из 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();

    


}

Это то,что смог придумать.Для одного поля

j0hnik 03.09.2017 13:33

<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 должны быть уникальные.

T3mkaa 03.09.2017 14:51

Это движок так генерирует (((

T3mkaa 03.09.2017 15:00

j0hnik,
Спасибо огромное.


Часовой пояс GMT +3, время: 11:08.