Alvin Bakker は接近していましたが、もう少し調整が必要でした。
問題は、ヘッダー行を含む各行にまたがることです。ヘッダー行には必要な値が含まれていないため、エラーが発生し、javascript はエラーで実行を停止します。
これを解決する簡単な方法は、ヘッダー行にいるかどうかを確認することです。
$('table .ilosc, table .cena_netto .stawka_vat').on('keyup paste change', function() {
$('table tr').each(function() {
//NEW CODE HERE:
//Pseudo code: if this row contains <th>-elements,
//then don't bother with it and move on to the next row.
if ($(this).find('th').length > 0)
return;
var ilosc = $(this).find('input.ilosc').val();
var cena_netto = $(this).find('input.cena_netto').val();
var wartosc_netto = (ilosc * cena_netto);
$(this).find('input.wartosc_netto').val(wartosc_netto);
var stawka_vat = $(this).find('input.stawka_vat').val().replace('%', '');
var kwota_vat = ( wartosc_netto * (stawka_vat / 100) );
$(this).find('input.kwota_vat').val(kwota_vat);
var wartosc_brutto = (wartosc_netto + kwota_vat);
$(this).find('input.wartosc_brutto').val(wartosc_brutto);
}); //END .each
return false;
}); // END change
代替ソリューション(@SlashmanXのコメントに触発された)
HTML を少し変更することもできます。
最初の行を<thead>
要素に入れます。このような:
<table>
<thead>
<tr>
<th>Lp.</th>
<th>Nazwa towaru lub usługi</th>
<th>Jednostka</th>
<th>Ilość</th>
<th>Cena netto</th>
<th>Wartość netto</th>
<th>Stawka VAT</th>
<th>Kwota VAT</th>
<th>Wartość brutto</th>
</tr>
</thead>
<!-- All data rows below -->
</table>
次に、次のように JavaScript を調整できます。
$('table .ilosc, table .cena_netto .stawka_vat').on('keyup paste change', function() {
//Subtle difference in this line: Spot the '>' in the selector!
$('table>tr').each(function() {
var ilosc = $(this).find('input.ilosc').val();
var cena_netto = $(this).find('input.cena_netto').val();
var wartosc_netto = (ilosc * cena_netto);
$(this).find('input.wartosc_netto').val(wartosc_netto);
var stawka_vat = $(this).find('input.stawka_vat').val().replace('%', '');
var kwota_vat = ( wartosc_netto * (stawka_vat / 100) );
$(this).find('input.kwota_vat').val(kwota_vat);
var wartosc_brutto = (wartosc_netto + kwota_vat);
$(this).find('input.wartosc_brutto').val(wartosc_brutto);
}); //END .each
return false;
}); // END change
繰り返しますが、これを指摘してくれた SlashmanX に感謝します。