Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2016, 12:49
Новичок на форуме
Отправить личное сообщение для MrZlo Посмотреть профиль Найти все сообщения от MrZlo
 
Регистрация: 11.11.2016
Сообщений: 6

Зависимый список с выводом стоимости. Нужна помощь
Добрый день уважаемые форумчане!
На просторах данного форума нашел темку от 10 года, и забрал из нее скриптик. Сама тема

Забрал из нее сливки и начал делать для себя. Вроде все сначала шло как по маслу но, потом наткнулся на проблему.
Сам скрипт во вложении.

Суть проблемы: нужно сделать что бы выводилась сумма из выбранной опции value.
<select id="articul_1" name="rar" class="select">
			<optgroup label="Granta St">
				<option id="g1" value="1300">На 1 сутки</option>
				<option id="g2" value="1100">2-3 суток</option>
				<option id="g3" value="1000">4-6 суток</option>
			</optgroup>
			<optgroup label="Granta Nm">
				<option id="g4" value="1600">На 1 сутки</option>
				<option id="g5" value="1300">2-3 суток</option>
				<option id="g6" value="1200">4-6 суток</option>
			</optgroup>

		</select>
		<br><br>
		<input type="button" onClick="javascript:CalcSum();" value="Расчитать стоимость">
		<br><br>
		<div id=TextSum></div>

На данный момент выводится только последний.

Сам скрипт подсчета:
function CalcSum(){
			var o=document.getElementById("articul_1");
			sum = 0;
			for(var i = 0; i < o.options.length; i++) {
				m1 = o.options[i].value;
				
				if ((m1 > 0)) {
					sum = m1;
				}
			}
			document.getElementById('TextSum').innerHTML = sum + " руб.";
		}


Почему выводится только последний, а не тот который я выбрал?
Дополнительно: как заблокировать подкатегорию, до тех пор пока не выбрана главная категория.

Заранее спасибо!
Вложения:
Тип файла: zip podshet.zip (2.5 Кб, 0 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2016, 12:52
Новичок на форуме
Отправить личное сообщение для MrZlo Посмотреть профиль Найти все сообщения от MrZlo
 
Регистрация: 11.11.2016
Сообщений: 6

Может конечно это устаревший вариант. Может есть то то новее и продуманей в плане подсчета стоимости. Буду признателен если посоветуете, что бы не делать велосипед.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2016, 12:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

MrZlo,

function CalcSum(){
      var o=document.getElementById("articul_1");
      document.getElementById('TextSum').innerHTML = o.value + " руб.";
    }
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2016, 12:56
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

MrZlo,
Цитата:
Почему выводится только последний, а не тот который я выбрал?
Потому что ты каждый раз присваиваешь заново
if ((m1 > 0)) {
  sum = m1;
}
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2016, 13:07
Новичок на форуме
Отправить личное сообщение для MrZlo Посмотреть профиль Найти все сообщения от MrZlo
 
Регистрация: 11.11.2016
Сообщений: 6

Огромное спасибо! Помогло! Как и ожидал что просто что то намудрил )

Еще пару вопросов:
1. Как заблокировать подкатегорию, до тех пор пока не выбрана главная категория?
2. Как сделать что бы с сумма выводилась без нажатия на кнопку "Расчитать стоимость"?
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2016, 13:14
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

MrZlo,
1. Где твои главные категории?
2. повесь листенера на событие change для селекта
Ответить с цитированием
  #7 (permalink)  
Старый 11.11.2016, 13:17
Новичок на форуме
Отправить личное сообщение для MrZlo Посмотреть профиль Найти все сообщения от MrZlo
 
Регистрация: 11.11.2016
Сообщений: 6

Сообщение от Coriolan161 Посмотреть сообщение
MrZlo,
1. Где твои главные категории?
2. повесь листенера на событие change для селекта
Полный листинг:
<!-- Пишем в соответствии со стандартом HTML5 -->
<!DOCTYPE HTML>
<html>
<head>
	<!-- Пишем заголовок документа -->
	<title>Динамические списки</title>
	<!-- Подключаем CSS-файл к документу -->
	<link rel="stylesheet" type="text/css" href="style.css" />
	<!-- Подключаем библеотеку jQuery, которая хранится на сервере Яндекса -->
	<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>

	<!-- Подключаем файл со своим собственным скриптом -->
	<script src="my.script.js"></script>
	<script type="text/javascript">
		function CalcSum(){
			var o=document.getElementById("articul_1");
			document.getElementById('TextSum').innerHTML = o.value + " руб. за сутки + Аванс от 5000 руб.";
		}


	</script>
</head>
<body>
	<!-- Форма для динамических списков -->
	<form name=MenuF>
		<div id="calctitle">Марка:</div><!-- ГЛАВНЫЕ КАТЕГОРИИ -->
		<select id="category_1" class="select">
			<option value="Lada">Lada</option>
			<option value="Lifan">Lifan</option>
			<option value="Renault">Renault</option>
			<option value="Nissan">Nissan</option>
			<option value="Daewoo">Daewoo</option>
			<option value="Mitsubisi">Mitsubisi</option>
			<option value="Toyota">Toyota</option>
			<option value="Volkswagen">Volkswagen</option>
			<option value="Газ">Газ</option>
		</select>
		<div id="calctitle">Модель:</div><!-- ПОДКАТЕГОРИИ -->
		<select id="subcategory_1" class="select">
			<optgroup label="Lada">
				<option value="Granta St">Granta St</option>
				<option value="Granta Nm">Granta Nm</option>
				<option value="Granta At">Granta At</option>
				<option value="Largus 7 мест">Largus 7 мест</option>
			</optgroup>
			<optgroup label="Lifan">
				<option value="Smile">Smile</option>
			</optgroup>
			<optgroup label="Renault">
				<option value="Logan St">Logan St</option>
				<option value="Logan Nm">Logan Nm</option>
				<option value="Logan 2014">Logan 2014</option>
				<option value="Logan At">Logan At</option>
				<option value="StepWay At">StepWay At</option>
				<option value="Fluence">Fluence</option>
			</optgroup>
			<optgroup label="Nissan">
				<option value="Аlmera Nm">Аlmera Nm</option>
				<option value="Аlmera At">Аlmera At</option>
				<option value="Juke">Juke</option>
			</optgroup>
			<optgroup label="Daewoo">
				<option value="Nexia">Nexia</option>
				<option value="Matiz">Matiz</option>
			</optgroup>
			<optgroup label="Mitsubisi">
				<option value="Lancer">Lancer</option>
			</optgroup>
			<optgroup label="Газ">
				<option value="Соболь Баргузин">Соболь Баргузин</option>
			</optgroup>
			<optgroup label="Toyota">
				<option value="Corolla At">Corolla At</option>
				<option value="Camry At">Camry At</option>
			</optgroup>
			<optgroup label="Volkswagen">
				<option value="Polo">Polo</option>
			</optgroup>
		</select>
		<div id="calctitle">Количество суток:</div>
		<select id="articul_1" name="rar" class="select">
			<optgroup label="Granta St">
				<option id="g1" value="1300">На 1 сутки</option>
				<option id="g2" value="1100">2-3 суток</option>
				<option id="g3" value="1000">4-6 суток</option>
				<option id="g4" value="900">7-15 суток</option>
				<option id="g5" value="800">2-3 суток</option>
				<option id="g6" value="700">4-6 суток</option>
				<option id="g7" value="2750">Выходные*</option>
			</optgroup>
			<optgroup label="Granta Nm">
				<option id="g1" value="1600">На 1 сутки</option>
				<option id="g2" value="1300">2-3 суток</option>
				<option id="g3" value="1200">4-6 суток</option>
				<option id="g4" value="1100">7-15 суток</option>
				<option id="g5" value="900">2-3 суток</option>
				<option id="g6" value="800">4-6 суток</option>
				<option id="g7" value="3250">Выходные*</option>
			</optgroup>

		</select>
		<br><br>
		<input type="button" onClick="javascript:CalcSum();" value="Расчитать стоимость">
		<br><br>
		<div id=TextSum></div>
	</form>

</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 11.11.2016, 13:19
Новичок на форуме
Отправить личное сообщение для MrZlo Посмотреть профиль Найти все сообщения от MrZlo
 
Регистрация: 11.11.2016
Сообщений: 6

Скрипт для зависимых списоков

(function($) 
	{$.fn.dependent = function(opts) 
		{opts.data = {};this.each(function() 
			{$.each(opts.chain, function(index, selectID) 
				{var ident = selectID.substr(1);var selectHTML = $(selectID).html();
					opts.data[ident] = {};
					$('<select>'+selectHTML+'</select>').find('optgroup').each(function() 
						{var optGroup = $('<div>').append( $(this).eq(0).clone() ).html();
						var group = $(this).attr('label');opts.data[ident][group] = optGroup;});
					if(opts.chain[index+1]) 
						{$(opts.chain[index]).bind('change', { 'nextID' : opts.chain[index+1] }, binding);} });
			$(this).bind('change', { 'nextID' : opts.chain[0] }, binding);
			function binding(event) {var next = event.data.nextID.substr(1);
				$('#'+next).html(opts.data[next][$(this).val()]);
				$('#'+next).trigger('change');}});}})(jQuery);
    // Обращение к функции Dependent JQuery для взаимосвязанных списков
    $(document).ready(function() {$('#category_1').dependent({chain : ['#subcategory_1', '#articul_1']});});
Ответить с цитированием
  #9 (permalink)  
Старый 11.11.2016, 13:21
Новичок на форуме
Отправить личное сообщение для MrZlo Посмотреть профиль Найти все сообщения от MrZlo
 
Регистрация: 11.11.2016
Сообщений: 6

Сообщение от Coriolan161 Посмотреть сообщение
MrZlo,
2. повесь листенера на событие change для селекта
Я не знаю как это делать. Я PHPшник и верстальщик ) Я не знаю яву ) Поэтому и прошу помощи.
Ответить с цитированием
  #10 (permalink)  
Старый 11.11.2016, 13:59
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

MrZlo,
Цитата:
Я не знаю яву )
вот мальчик написал про события и обработку
https://learn.javascript.ru/introduction-browser-events
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь, сломался калькулятор smnik Работа 7 16.05.2015 13:39
Нужна помощь по javascript darklend Общие вопросы Javascript 0 12.01.2014 23:33
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
Нужна помощь по слайдеру seoguru Работа 3 28.01.2013 22:02
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17