Javascript.RU

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

Рассчитать итоговую сумму в таблице - js
Всем привет! Нужна помощь в доработке калькулятора расчета услуг.
Основная задача - внедрить калькулятор в существующую таблицу с услугами компании. В нее входят два условия:
  1. рассчитать стоимость на конкретную услугу
  2. рассчитать итоговую сумму
С первой задачей более менее справился. Написал пока две строки, но, боюсь что код будет очень большим, если писать так для каждой. Возможно, кто-то знает способ попроще.
Вторую задачу, казалось бы тоже легкую, решить не могу. Буду признателен за помощь. Заранее спасибо.
Таблица на jsfiddle

Возможно, кому-то в дальнейшем тоже пригодится.
Ответить с цитированием
  #2 (permalink)  
Старый 13.04.2018, 14:22
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<style>
input.result,
input.colvo {
  border: 0;
  text-align: center;
  background-color: rgba(255, 255 ,255, .15);
}
input.result {
  text-align: left;
  background-color: rgba(255, 255 ,255, 0);
}
input.price {
  display: none;
}
input.result,
input.price {
pointer-events:none;
}
</style>
<table class="table table-hover">
  <thead class="thead-light">
	<tr>
		<th scope="col" style="width: 30%">Показатель</th>
		<th scope="col" style="width: 20%">Время исполнения*</th>
		<th scope="col"style="width: 20%">Стоимость за единицу</th>
		<th scope="col" style="width: 30%">Введите коичество анализов <sup style="color:#990000">макс. 50*</sup></th>
	</tr>
  </thead>
  <tbody>
	<tr>
		<td>Итоговая сумма: </td>
		<td></td>
		<td><input id="allresult" value="0"> ₽</td>
		<td></td>
	</tr>
	<tr class="table-info">
		<td>1,1,2,2-тетрахлорэтан</td>
		<td>1,5 часа</td>
		<td><input class="result"  value=""></td>
		<td ><input class="colvo"  value="0" type="number" min="0" max="50" step="1"> <input class="price" value="1500"></td>
	</tr>
	<tr>
		<td>1,1,2-трихлорэтан</td>
		<td>1,5 часа</td>
		<td><input class="result "  value=""></td>
		<td ><input class="colvo"  value="0" type="number" min="0" max="50" step="1"> <input class="price" value="1500"></td>
	</tr>
  </tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script>
$(document).ready(function(){
 $('.colvo').on('input',function(){ 
        var par = $(this).parent().parent();
        var res = $('#allresult');
        par.find('.result').val(par.find('.price').val()*$(this).val());
        res.val(0);
        $('.result').each(function(ind, el) {
             res.val(+res.val() + +el.value); 
          }); 
    });  
});
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2018, 14:46
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Огромное спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 16.04.2018, 12:47
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Dilettante_Pro, а можно на основе этого скрипта вывести строки с выбранными услугами и их кол-вом в еще один отдельный блок? Я вывел еще один результат в отдельную табличку, но не знаю как вывести в ней появление строк с выбранными услугами.

Последний раз редактировалось madeas, 16.04.2018 в 12:57.
Ответить с цитированием
  #5 (permalink)  
Старый 16.04.2018, 13:34
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Вы можете вписать что хотите куда хотите точно так же, как суммарный результат прописывается в <td><input id="allresult" value="0"> ₽</td>

Покажите полный макет с дополнительной таблицей и что у вас не получается.
Ответить с цитированием
  #6 (permalink)  
Старый 16.04.2018, 13:50
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Я не совсем то имел ввиду. Вот сама табличка https://jsfiddle.net/madeas/evbLyrf3/53/
Наверх добавил еще одну, с текстом ИТОГО и пустой строкой (tr). Надо как-то сделать, чтобы в ней появлялись выбранные строки из первой таблицы. Т.е.:
1. Название (показатель)
2. Выбранное количество анализов
3. И общая стоимость напротив каждого анализа, в зависимости от количества.
4. Итоговая сумма, которую я уже вывел.

Вот. Как вывести строки из одной таблицы с другую не знаю. Табличка 2 такая же как и 1, только убрал колонку времени.
Ответить с цитированием
  #7 (permalink)  
Старый 16.04.2018, 14:05
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

а суммарный результат почему-то повторно не выводится, пришлось добавить новый id в таблице. Он выходит только в одном, в другом остается ноль.
Ответить с цитированием
  #8 (permalink)  
Старый 16.04.2018, 15:05
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<style>
input.result,
input.colvo {
  border: 0;
  text-align: center;
  background-color: rgba(255, 255 ,255, .15);
}
input.result {
  text-align: left;
  background-color: rgba(255, 255 ,255, 0);
}
input.price {
  display: none;
}
input.result,
input.price,
.first  {
pointer-events:none;
}
</style>
<table class="first table table-hover">
  <thead class="thead-light">
	  <tr>
		<th scope="col">Показатель</th>
		<th scope="col">Стоимость анализов</th>
		<th scope="col" class="text-secondary">Количество анализов <sup><a href="#t--two" style="cursor: help;text-decoration: none;" class="text-danger" data-toggle="tooltip" data-placement="top" title="Максимальное количество проводимых анализов - 50">**</a></sup></th>
	</tr>
  </thead>
  <tbody>


  </tbody>
</table>
<table class="table table-hover">
  <thead class="thead-light">
	<tr>
		<th scope="col" style="width: 30%">Показатель</th>
		<th scope="col" style="width: 20%">Время исполнения*</th>
		<th scope="col"style="width: 20%">Стоимость за единицу</th>
		<th scope="col" style="width: 30%">Введите коичество анализов <sup style="color:#990000">макс. 50*</sup></th>
	</tr>
  </thead>
  <tbody>
	<tr>
		<td>Итоговая сумма: </td>
		<td></td>
		<td><input id="allresult" value="0"> ₽</td>
		<td></td>
	</tr>
	<tr>
		<td>1,1,2,2-тетрахлорэтан</td>
		<td>1,5 часа</td>
		<td><input class="result"  value=""></td>
		<td ><input class="colvo"  value="0" type="number" min="0" max="50" step="1"> <input class="price" value="1500"></td>
	</tr>
	<tr>
		<td>1,1,2-трихлорэтан</td>
		<td>1,5 часа</td>
		<td><input class="result "  value=""></td>
		<td ><input class="colvo"  value="0" type="number" min="0" max="50" step="1"> <input class="price" value="1500"></td>
	</tr>
  </tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script>
$(document).ready(function(){
 $('.colvo').on('input',function(){
        var targetTable = $('table.first tbody');
        targetTable.html('');  
        var par = $(this).parent().parent(),
             res = $('#allresult');
        par.find('.result').val(par.find('.price').val()*$(this).val());
        res.val(0);
        $('.result').each(function(ind, el) {          
             var p = $(el).parent().parent();
             res.val(+res.val() + +el.value);
             if(+el.value > 0) {
                $(el).parent().parent().clone().appendTo(targetTable);
             }
          });
          res.parent().parent().clone().appendTo(targetTable);
     });  
});
</script>

Последний раз редактировалось Dilettante_Pro, 16.04.2018 в 15:21.
Ответить с цитированием
  #9 (permalink)  
Старый 16.04.2018, 15:28
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Dilettante_Pro, еще раз, огромное спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операционная Система на JS Icat Общие вопросы Javascript 3 17.04.2018 22:54
Вывыод контента через JS inet_boy Элементы интерфейса 0 18.11.2013 03:00
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
Вставка кода js с помощью js Alice Общие вопросы Javascript 1 12.06.2013 19:05