Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Нужна помощь в скрипте расчёта! (https://javascript.ru/forum/dom-window/79456-nuzhna-pomoshh-v-skripte-raschjota.html)

espltd 12.02.2020 12:34

Нужна помощь в скрипте расчёта!
 
Всем доброго дня! Уважаемые, подскажите пожалуйста... На jquery не писал очень давно..

суть такова.. ни как не удается сделать корректный подсчет... например человек выбрал параметр в первом селекте, а во втором не выбрал. или наоборот - в первом не выбрал, а выбрал во втором.. или ничего не выбрал в селектах, но зато выбрал один или оба чекбоксов. Я написал много условий с конструкциями if,else. но понял, что только запутался!!:blink: , уверен, что есть более короткий вариант для подобных штук, но опыта не хватает., т.к. я пхп-шник. Помогите плиз. Иными словами здесь просто идет не большой подсчет и обновляет ценник в диве... Буду очень благодарен за помощь)

есть 2 селекта такого вида

<select id="size">
   <option val="0">выберите</option>
   <option val="1000">1000</option>
   <option val="2000">2000</option>
</select>

<select id="col">
   <option val="0">выберите</option>
   <option val="1">1 шт</option>
   <option val="2">2 шт</option>
</select>


и

2 чекбокса

<input type="checkbox" id="yes" class="modCheckbox" name="yes" aria-invalid="false"> //если выбран, то к ценнику прибавить 500

<input type="checkbox" id="no" class="modCheckbox" name="no" aria-invalid="false"> //если выбран, то прибавить 1000


внизу div

<div id="priceup">500</div>

рони 12.02.2020 12:36

espltd,
:-?

ksa 12.02.2020 12:39

espltd, про селекты понятно - рубли множить на штуки...
А с чеками как быть?
Если они про что-то одно yes/no так это вообще не чекбоксами нужно делать, а радиокнопками... Или одним чеком - выбран или нет...

ksa 12.02.2020 12:44

espltd, вот тебе макетик для начала... ;)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('#size,#col,#yes,#no').on('input',function(){
		alert(1)
	})
});
</script>
</head>
<body>
<select id="size">
   <option value=""></option>
   <option value="1000">1000</option>
   <option value="2000">2000</option>
</select>
<select id="col">
   <option value=""></option>
   <option value="1">1 шт</option>
   <option value="2">2 шт</option>
   <option value="3">3 шт</option>
</select>
<input type="checkbox" id="yes" class="modCheckbox" name="yes" aria-invalid="false">
<input type="checkbox" id="no" class="modCheckbox" name="no" aria-invalid="false">
</body>
</html>

espltd 12.02.2020 12:53

не доходит(((((

я вот по такому принципу делал, это касается одного только чекбокса, очень громоздко все.... На самом деле понимаю, что оно должно работать не на куче условий по if, else, а скорее как-то взаимоисключать не выбранные элементы, а оставлять только выбранные... возможно ошибаюсь... подсчет не получатеся все равно...


$('#count').on('click', function () {
    
      if ( $(this).is(':checked') ) {
      
      	
        if( (resultSize || resultBorder) == 0 ){
        	$('#priceup').text( (priceDefault + 1800) );
        }
        
       
        if(resultSize != 0){
        	$('#priceup').text( (priceDefault + size + 1800) ); 
        }
        
        
        if(resultBorder != 0){
        	$('#priceup').text( (priceDefault + border + 1800) ); 
        }
        
       
        if( (resultSize && resultBorder) != 0 ){
        	$('#priceup').text( (priceDefault + size + border + 1800) ); 
        }
        
      } else {
      		
           
            if( (resultSize || resultBorder) == 0 ){
            	$('#priceup').text( priceDefault ); 
            }
            
      		
            if(resultSize != 0){
        		$('#priceup').text( (priceDefault + size) ); 
        	}  
            
           
            if(resultBorder != 0){
        		$('#priceup').text( (priceDefault + border) ); 
        	} 
            
          
            if( (resultSize && resultBorder) != 0 ){
            	$('#priceup').text( (priceDefault + size + border) ); 	
            }
            
                
            if( (resultSize != 0) && (resultBorder == 0) ){
            	$('#priceup').text( (priceDefault + size - border) );
            }
            
            
      }
      
	});

laimas 12.02.2020 14:44

espltd, определите значения флажкам соответственно 1800 и 0, и просто складывайте с выбранным, без всяких условий.


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