 
			
				17.02.2014, 01:16
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 21.08.2012 
					
					
					
						Сообщений: 86
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Как сделать такой калькулятор при условии что товаров может быть 80-100
			 
			
		
		
		
		Начал делать кулькулятор, токо не понимаю как распарсить большое кол-во товаров если их может быть  80-100 . 
вот начал делать  http://качкиесть.рф/ 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.02.2014, 02:49
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 dimas15, 
 где-то надо хранить цену для умножения на количество -- и массив всех значений всех инпутов для тотал 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.02.2014, 05:43
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.10.2010 
					
					
					
						Сообщений: 2,718
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Полнейший п-ц. Еще можно div на span умножить. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.02.2014, 13:43
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 21.08.2012 
					
					
					
						Сообщений: 86
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от kostyanet
			 
		
	 | 
 
	| 
		Полнейший п-ц. Еще можно div на span умножить.
	 | 
 
	
 
 А примера не будет? Или может подскажите что поюзать надо , а то я мало на js что ли пишу поэтому плохо с ним работаю..  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось dimas15, 17.02.2014 в 13:47.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.02.2014, 13:57
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		dimas15, 
 закоментирован в коде вариант любезно предложенный  
	
 
	| 
		
			Сообщение от kostyanet
			
		
	 | 
 
	| 
		Полнейший п-ц. Еще можно div на span умножить.
	 | 
 
	
 
 
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>spinner demo</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  <style type="text/css">
  .spinner{
    width: 50px
  }
  span{
    color: #FF0000;
  }
  </style>
  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
  <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
</head>
<body>
<table>
<tr>
		<td>Формула 1 за 1шт <span>828</span> руб</td>
		<td>Кол-во шт.: <input type="text" name="spinner" min="0" value="0"  id="spinner" class="spinner" data-price="828"/></td>
</tr>
<tr>
		<td>Формула 2 за 1шт <span>750</span> руб</td>
		<td>Кол-во шт.: <input type="text" name="spinner" min="0" value="0"  id="spinner2" class="spinner" data-price="750"/></td>
</tr>
<tr>
		<td>Формула 3 за 1шт <span>650</span> руб</td>
		<td>Кол-во шт.: <input type="text" name="spinner" min="0" value="0"  id="spinner3" class="spinner"  data-price="650"/></td>
</tr>
<tr>
		<td>...</td>
		<td>....</td>
</tr>
<tr><td>Общая стоимость: <span id="res_total" name="priceall"></span></td></tr>
</table>
<input id="spinner">
<script>
var sum = [],
    total = function (a) {
        return a.reduce(function (a, b, c) {
            return a + b
        }, 0)
    };
$("[name='spinner']").each(function (indx, el) {
    //var price = +$('span', $(el).parents('tr')).html();
      var price = +$(el).data('price');
    sum[indx] = 0;
    $(el).spinner({
        spin: function (event, ui) {
            sum[indx] = ui.value * price;
            $("#res_total").html(total(sum))
        },
        change: function (event, ui) {
            sum[indx] = this.value * price;
            $("#res_total").html(total(sum))
        },
        stop: function (event, ui) {
            sum[indx] = this.value * price;
            $("#res_total").html(total(sum))
        }
    });
});
$("#res_total").html(total(sum))
</script>
</body>
</html>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.02.2014, 16:28
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 21.08.2012 
					
					
					
						Сообщений: 86
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от рони
			 
		
	 | 
 
	
		dimas15, 
 закоментирован в коде вариант любезно предложенный  
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>spinner demo</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  <style type="text/css">
  .spinner{
    width: 50px
  }
  span{
    color: #FF0000;
  }
  </style>
  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
  <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
</head>
<body>
<table>
<tr>
		<td>Формула 1 за 1шт <span>828</span> руб</td>
		<td>Кол-во шт.: <input type="text" name="spinner" min="0" value="0"  id="spinner" class="spinner" data-price="828"/></td>
</tr>
<tr>
		<td>Формула 2 за 1шт <span>750</span> руб</td>
		<td>Кол-во шт.: <input type="text" name="spinner" min="0" value="0"  id="spinner2" class="spinner" data-price="750"/></td>
</tr>
<tr>
		<td>Формула 3 за 1шт <span>650</span> руб</td>
		<td>Кол-во шт.: <input type="text" name="spinner" min="0" value="0"  id="spinner3" class="spinner"  data-price="650"/></td>
</tr>
<tr>
		<td>...</td>
		<td>....</td>
</tr>
<tr><td>Общая стоимость: <span id="res_total" name="priceall"></span></td></tr>
</table>
<input id="spinner">
<script>
var sum = [],
    total = function (a) {
        return a.reduce(function (a, b, c) {
            return a + b
        }, 0)
    };
$("[name='spinner']").each(function (indx, el) {
    //var price = +$('span', $(el).parents('tr')).html();
      var price = +$(el).data('price');
    sum[indx] = 0;
    $(el).spinner({
        spin: function (event, ui) {
            sum[indx] = ui.value * price;
            $("#res_total").html(total(sum))
        },
        change: function (event, ui) {
            sum[indx] = this.value * price;
            $("#res_total").html(total(sum))
        },
        stop: function (event, ui) {
            sum[indx] = this.value * price;
            $("#res_total").html(total(sum))
        }
    });
});
$("#res_total").html(total(sum))
</script>
</body>
</html>
	 | 
 
	
 
 спасиб за пример буду юзать .  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.02.2014, 21:28
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.10.2010 
					
					
					
						Сообщений: 2,718
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от dimas15
			
		
	 | 
 
	| 
		А примера не будет?
	 | 
 
	
 
 Калькулятору нужны числа, причем разные. Целые, с точками-запятыми, процентами скидки, в нормализованном виде и все такое. Правильно?
 
Вы начинаете с самоочевидного. Типа вот у меня есть в хтмле число и вот число, в смысле изображение чисел, поскольку это голимый текст в том числе и var d = 8 не число, а текст. 
 
Но продолжите вы сплошным геморроем если, конечно, оно будет иметь продолжение. Легкость начала даст толчок, и попрет ваш кальк расти вширь.
 
А между тем числа откуда-то берутся и надо их беречь как числа не пихая бездумно в теги. 
 
Сохраните данные как входящие данные в массиве и работайте с ним как угодно. Вы же откуда-то данные получаете?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.02.2014, 21:31
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.10.2010 
					
					
					
						Сообщений: 2,718
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Если это поле ввода у него чистый value. Спиннер-шевроны значения не имеют. Но это валуе не надо умножать на innerHTML и даже textContent элемента. Валуе с id идет в кальк в котором уже заготовлены множители взятые из бд какой-нить хотя бы. 
 
Ну а вообще вообще так не делают. Нет особого смысла вкачивать в браузер все ценники, скидки и акции. Из браузера на сервер идут потихоньку id, сервер получает, в рабочем порядке запрашивает, там все считает и выдает какой-нить json. Который вы немедленно рендерите. 
 
На входе id=>amount, то есть уникальный идентификатор продукта и количество. Эта парочка идет инсертом с автоубдейтом (on duplicate key update если вы правильно спроектировали бд) и сразу же запрос на подсчет, типа такого 
 
select sum(price *amount) sum, count(prod_id) count from orders as o where...// тут условия по юзеру и прочим параметрам согласно DDL. 
 
В результате браузер получает массив sum=>x, amount=>y 
 
Вот и весь куркулятор. 
 
ЗЫ Да, и это значит что юзер может месяц на погоны давить и наказаывать стопицот наименований, а вы и не заметите. Потому что не будет 80-100 товаров, будет каждый раз 1 штука. Ввел - уехало - посчиталось, ввел- ну и так далее эротично. А ковырять хтмл - не эротично. 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось kostyanet, 17.02.2014 в 21:44.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.02.2014, 21:38
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		kostyanet, 
 да достаточно одного массива с ценами чтобы создать всё что наваял выше    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.02.2014, 21:48
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.10.2010 
					
					
					
						Сообщений: 2,718
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Проблема выгрузить с браузера этот массив. Куда вы его положите, эти 80 тире 100 идех? 
Ну, я понимаю, 80 тире запросов с предварительной проверкой на вшивость и готово. Ну или как уже обсуждалось where in( и тут 80 тире 100 id)
 
А, ну если в бд не сохраняются заказы, то конечно. Куки навернул и нет заказов.    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |