Вас понял. Выкладываю код. В каждом типе работ оставил по 2 наименования, дабы не выкладывать огромную простыню кода... Количество наименований в каждом типе работ соответственно может быть разным.
<div id="calculator" class="span4"><!-- START: Modules Anywhere -->
<form onsubmit="return false;" oninput="changeText0()">
<table border ='1' id='tablecalc' class="table table-bordered">
<thead>
<tr>
<th>Наименование</th>
<th>Цена</th>
<th>Количество</th>
<th>Сумма</th>
</tr>
</thead>
<tr id="trmain">
<td colspan="4">Работы по установке домофонов</td>
</tr>
<tr id="trmain0">
<td class="tdname" >Монтаж и подключение накладной вызывной панели</td>
<td class="tdprice" price='1500'>1500 руб.</td>
<td><input type='text'></td>
<td><output id='tot0-0'>0 руб.</output></td>
</tr>
<tr id="trmain0">
<td class="tdname" >Монтаж и подключение накладной вызывной панели</td>
<td class="tdprice" price='1500'>1500 руб.</td>
<td><input type='text'></td>
<td><output id='tot0-1'>0 руб.</output></td>
</tr>
<tr id="trmain">
<td>Итого:</td><td colspan="3"><output class="stot" id="stot0">0 руб.</output></td>
</tr>
<tr id="trmain">
<td colspan="4">Пуско-наладочные работы при установке домофонов</td>
</tr>
<tr id="trmain1">
<td class="tdname" >Программирование ключа для домофона</td>
<td class="tdprice" price='25'>25 руб.</td>
<td><input type='text'></td>
<td><output id='tot1-0'>0 руб.</output></td>
</tr>
<tr id="trmain1">
<td class="tdname" >Настройка функциональной группы до 3 органов</td>
<td class="tdprice" price='7500'>7500 руб.</td>
<td><input type='text'></td>
<td><output id='tot1-1'>0 руб.</output></td>
</tr>
<tr id="trmain">
<td>Итого:</td><td colspan="3"><output class="stot" id="stot1">0 руб.</output></td>
</tr>
<tr id="trmain">
<td colspan="4">Слаботочные работы при установке домофона</td>
</tr>
<tr id="trmain2">
<td class="tdname" >Монтаж пластиковой коробки на кабеле</td>
<td class="tdprice" price='1100'>1100 руб.</td>
<td><input type='text'></td>
<td><output id='tot2-0'>0 руб.</output></td>
</tr>
<tr id="trmain2">
<td class="tdname" >Монтаж пластикового короба (1 м)</td>
<td class="tdprice" price='25'>25 руб.</td>
<td><input type='text'></td>
<td><output id='tot2-1'>0 руб.</output></td>
</tr>
<tr id="trmain">
<td>Итого:</td><td colspan="3"><output class="stot" id="stot2">0 руб.</output></td>
</tr>
</table>
<output id="supertotal">0 руб.</output>
</form>
<script>
function changeText0(){
var supertotal = 0;
var total = 0;
var prices = [];
var vals = [];
var totals = [];
var stotalsid= [];
var stotals= 0;
$('.stot').each(function(){
stotalsid.push (Number($(this).attr("id")));
});
for (var i=0; i<stotalsid.length; i++)
{
$('#trmain'+ i +' .tdprice').each(function(){
prices.push (Number($(this).attr("price")));
});
$('#trmain'+ i +' input').each(function(){
vals.push (Number($(this).val()));
});
for (var ii=0; ii<vals.length; ii++)
{
totals[ii] = vals[ii]*prices[ii];
$('#tot' +i +'-'+ ii).html( totals[ii] + ' руб.' );
stotals += totals[ii];
}
supertotal += stotals;
$('#stot'+ i).html( stotals + ' руб.' );
stotals= 0;
prices = [];
vals = [];
totals=[];
}
$('#supertotal').html( supertotal + ' руб.' );
};
</script>
<!-- END: Modules Anywhere --></div>