@vitter2000

Как скрыть option value одного селекта при выборе option value другово?

Есть калькулятор, при выборе в label for "service_type" option value = "2" должен скрываться value="1", value="2", value="3" в label for="building_type".
<td class="cnt main">
<div id="page_text">
<h1>Калькулятор</h1>
<h2>cтоимости услуг</h2>
<div class="hr"> </div>
<p> Для рассчета стоимости заполните форму и нажмите кнопку «Pассчитать» </p>
<script type="text/javascript">
	z_calc_links = {	
/*если ежедневная уборка*/	
				1: {					
				service: 1,					
				building: 1,					
				min: 0,					
				max: 1000,					
				price: 86 				
				},				
				2: {					
				service: 1,					
				building: 1,					
				min: 1001,					
				max: 5000,					
				price: 14 				
				},				
				3: {					
				service: 1,					
				building: 1,					
				min: 5001,					
				max: 10000,					
				price: 13 				
				},				

				
				5: {					
				service: 1,					
				building: 2,					
				min: 0,					
				max: 1000,					
				price: 25 				
				},				
				6: {					
				service: 1,					
				building: 2,					
				min: 1001,					
				max: 5000,					
				price: 13 				
				},				
				7: {					
				service: 1,					
				building: 2,					
				min: 5001,					
				max: 10000,					
				price: 10 				
				},				

				
				9: {					
				service: 1,					
				building: 3,					
				min: 0,					
				max: 1000,					
				price: 60 				
				},				
				10: {					
				service: 1,					
				building: 3,					
				min: 1001,					
				max: 5000,					
				price: 40 				
				},				
				11: {					
				service: 1,					
				building: 3,					
				min: 5001,					
				max: 10000,					
				price: 35 				
				},				
				
				
				13: {					
				service: 1,					
				building: 4,					
				min: 0,					
				max: 1000,					
				price: 20 				
				},				
				14: {					
				service: 1,					
				building: 4,					
				min: 1001,					
				max: 10000,					
				price: 10 				
				},				
/*если ежедневная уборка административное КОНЕЦ*/	



/*если жилое*/
				21: {					
				service: 2,					
				building: 5,					
				min: 0,					
				max: 80,					
				price: 30 				
				},				
				22: {					
				service: 2,					
				building: 5,					
				min: 81,					
				max: 150,					
				price: 28 				
				},				
				23: {					
				service: 2,					
				building: 5,					
				min: 151,					
				max: 250,					
				price: 26 				
				},		
				24: {					
				service: 2,					
				building: 5,					
				min: 251,					
				max: 10000,					
				price: 25 				
				},				

				
				25: {					
				service: 2,					
				building: 6,					
				min: 0,					
				max: 60,					
				price: 25 				
				},				
				26: {					
				service: 2,					
				building: 6,					
				min: 61,					
				max: 150,					
				price: 23 				
				},				
				27: {					
				service: 2,					
				building: 6,					
				min: 151,					
				max: 250,					
				price: 21 				
				},	
				28: {					
				service: 2,					
				building: 6,					
				min: 251,					
				max: 10000,					
				price: 20 				
				},				

/*если жилое КОНЕЦ*/



/*если послестрой*/
				31: {					
				service: 3,					
				building: 1,					
				min: 1,					
				max: 1000,					
				price: 90 				
				},				
				32: {					
				service: 3,					
				building: 1,					
				min: 1001,					
				max: 5000,					
				price: 45 				
				},				
				33: {					
				service: 3,					
				building: 1,					
				min: 5001,					
				max: 10000,					
				price: 30 				
				},				

				
				35: {					
				service: 3,					
				building: 2,					
				min: 1,					
				max: 1000,					
				price: 40 				
				},				
				36: {					
				service: 3,					
				building: 2,					
				min: 1001,					
				max: 5000,					
				price: 20 				
				},				
				37: {					
				service: 3,					
				building: 2,					
				min: 5001,					
				max: 10000,					
				price: 15 				
				},				

				
				39: {					
				service: 3,					
				building: 3,					
				min: 0,					
				max: 1000,					
				price: 75 				
				},				
				40: {					
				service: 3,					
				building: 3,					
				min: 1001,					
				max: 5000,					
				price: 35 				
				},				
				41: {					
				service: 3,					
				building: 3,					
				min: 5001,					
				max: 10000,					
				price: 25 				
				},				
				
				
				42: {					
				service: 3,					
				building: 4,					
				min: 0,					
				max: 1000,					
				price: 40 				
				},				
				43: {					
				service: 3,					
				building: 4,					
				min: 1001,					
				max: 10000,					
				price: 25 				
				},	

				
				44: {					
				service: 3,					
				building: 5,					
				min: 1,					
				max: 80,					
				price: 70 				
				},				
				45: {					
				service: 3,					
				building: 5,					
				min: 81,					
				max: 150,					
				price: 67 				
				},				
				46: {					
				service: 3,					
				building: 5,					
				min: 151,					
				max: 250,					
				price: 64 				
				},				
				47: {					
				service: 3,					
				building: 5,					
				min: 251,					
				max: 10000,					
				price: 61 				
				},

				
				48: {					
				service: 3,					
				building: 6,					
				min: 1,					
				max: 60,					
				price: 60 				
				},				
				49: {					
				service: 3,					
				building: 6,					
				min: 61,					
				max: 150,					
				price: 58 				
				},
				50: {					
				service: 3,					
				building: 6,					
				min: 151,					
				max: 250,					
				price: 56 				
				},				
				51: {					
				service: 3,					
				building: 6,					
				min: 251,					
				max: 10000,					
				price: 55 				
				},
				
				
/*если послестрой КОНЕЦ*/
				
	};			
	
	function calcPrice(){				
	var eResult = document.getElementById('result');				
	var service = document.getElementById('service_type').value;				
	var building =document.getElementById('building_type').value;				
	var area =  Number(document.getElementById('area').value);				
	if (typeof(area)=='NaN' || area==0) {					
	eResult.innerHTML = '<span class="error">Вы не ввели площадь объекта</span>';				
	} else if(service==0) {					
	eResult.innerHTML = '<span class="error">Вы не выбрали услугу</span>';				
	} else if(building==0) {					
	eResult.innerHTML = '<span class="error">Вы не выбрали назначение здания</span>';				
	} else if(area>100000) {					
	eResult.innerHTML = 'Такая площадь не входит в тарифную сетку. Свяжитесь с нашим менеджером для составления индивидуального тарифа.';				
	} else {					
	eResult.innerHTML = '';					
	for (var i in z_calc_links){						
	var item = z_calc_links[i];						
	if (item.service == service && item.building == building && item.min <= area && item.max >= area) {							
	eResult.innerHTML = '<p><h2>Стоимость:</h2><b>от '+item.price+' руб./м<sup>2</sup></b>,<br />'							
	+'<b> от '+(item.price*area)+' руб./мес.</b></p>';						
	}					
	}				
	}			
	}
	
	
	



 
</script>
<div id="calc" style="margin: 0pt auto; width: 300px;">
<label for="service_type">Выбор услуги:</label>
<select id="service_type" name="service_type">
<option value="0">...</option>
<option value="1">Ежедневная уборка</option>
<option value="2">Уборка жилого помещения</option>
<option value="3">Послестрой</option>
</select>

<label for="period_type">Периодичность:</label>
<select id="period_type" name="period_type">
<option value="0">...</option>
<option value="1">3 раза в неделю</option>
<option value="2">2 раза в неделю</option>
<option value="3">1 раз в неделю</option>
<option value="4">1 раз в две недели</option>
</select>


<!--Ежедневная уборка!-->
<label for="building_type">Выбор назначения здания:</label>
<select id="building_type" name="building_type">
<option value="0">...</option>
<option value="1">административное</option>
<option value="2">торговое</option>
<option value="3">производственное</option>
<option value="4">складское</option>
<option value="5">дом, коттедж</option>
<option value="6">квартира</option>

</select>
<!--Ежедневная уборка КОНЕЦ!-->

<label for="area">
Площадь объекта, м
<sup>2</sup>
:
</label>
<input id="area" type="text" name="area">
<div id="result">
<span class="error">Вы не ввели площадь объекта</span>
</div>
<img id="calc_button" align="middle" src="/i/calc_button.png" alt="Рассчитать" onclick="calcPrice();">
</div>
</div>
</td>



<style>
	#calc {
		margin-top: -10px;
	}
	#calc label {
		color: #386390;
		display: block;
		font-size: 14px;
		padding: 24px 0 8px;
	}
	#calc input, #calc select {
		border: 1px solid #2d608f;
		height: 19px;
		padding: 0;
		width: 100%;
	}
	#calc_button {
		cursor: pointer;
		margin: 14px 0 15px 55px;
	}
	#result {
		padding-top: 12px;
	}
</style>
  • Вопрос задан
  • 494 просмотра
Пригласить эксперта
Ответы на вопрос 1
@lyeskin
Я бы сделал динамическую генерацию калькулятора. То есть забил бы настройки изначально в JSON -
[{"serviceType": "daily",  "periods": [{"value":0, "title":"1 раз"},{}, ...],  
"buildingTypes": [{"value":0, "title" : "административное"}] } , {} , ...]


Проходил бы по нему, выбирал нужные настройки для отдельного типа уборки и генерил бы калькулятор. Также в объект настройки можно внести например фикс прайс за квадратный метр и тп.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы