Sprawdz czy jak dodajesz wiersz to odpowiednio aktualizuje Ci sie wartosc zmiennej: wierszy (2,3,4,...), za pomoca console.log(wierszy) albo konsoli w przegladarce.
Jezeli jest prawidlowa to wydaje mi sie, ze dodaje Ci do formularza wartosc nazwa_pozycji1 (jest na poczatku w html), nazwa_pozycji2 (jak dodajesz jeden wiersz).
Innych wartosci CI nie doda, bo juz w html masz np. pole pkwiu, a pozniej dodajesz kolejne pole z name=pkwiu. To bedzie submitowane jako jedno pole, a nie dwa.
Masz tez np.
<option value="0">0</option>
<option value="0">ZW</option>
<option value="0">NP</option>
w jednym selectcie - to jest obojetne co user wybierze z tych opcji, bo dostaniesz dla kazdej 0.
A tutaj Twoj kod:
<form id="basicForm4" method="post" action="">
<table id="pozycje" name="pozycje" class="table table-hidaction table-hover mb30"> <th width="50" style="text-align:center;">Lp
</th> <th width="300" style="text-align:center;">Nazwa
</th> <th style="text-align:center;">PKWiU
</th> <th style="text-align:center;">Ilość
</th> <th style="text-align:center;">j.m.
</th> <th style="text-align:center;">Cena netto
</th> <th style="text-align:center;">VAT
<br />[%]
</th> <th style="text-align:center;">Wartość netto
</th> <th style="text-align:center;">Wartość brutto
</th>
<td style="text-align:center;" id="1">1
</td>
<input type="text" name="nazwa_pozycji1" id="nazwa_pozycji1" class="form-control" placeholder="Nazwa pozycji / artykułu" />
<input style="text-align:center;" type="text" name="pkwiu" id="pkwiu" class="form-control"/>
<input style="text-align:center;" type="text" name="ilosc" id="ilosc" class="form-control" value="0.00" placeholder="0.00" onchange="checkCyfra(this)" />
<select name="jm" id="jm" data-placeholder="szt" class="selectlist">
<input style="text-align:center;" type="text" name="cena_netto" id="cena_netto" value="0.00" placeholder="0.00" class="form-control" onchange="checkCyfra(this)" />
<select name="vat" id="vat" data-placeholder="%" class="selectlist" >
<input style="text-align:center;" type="text" name="wartosc_netto" id="wartosc_netto" value="0.00" onchange="checkCyfra(this)" class="form-control"/>
<input style="text-align:center;" type="text" name="wartosc_brutto" id="wartosc_brutto" value="0.00" onchange="checkCyfra(this)" class="form-control"/>
<input type="button" id="dodaj_wiersz" class="jquery-add-row" value="Dodaj wiersz" /> <br /> <input type="hidden" id="ilewierszy" name="ilewierszy" value="1" />
<input id="zeby-kliknac" class="btn btn-warning" name="action" type="submit" value="Zapisz fakturę" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
$("#dodaj_wiersz").click(function() {
var tabelka = document.getElementById('pozycje');
var wierszy = tabelka.rows.length;
$('#ilewierszy').val(wierszy);
var row ='
<tr class="dane" id="'+wierszy+'"><td style="text-align:center;" id="'+wierszy+'">'+wierszy+'
</td><td ><input type="text" name="nazwa_pozycji'+wierszy+'" id="nazwa_pozycji" class="form-control" placeholder="Nazwa pozycji / artykułu" /></td><td ><input style="text-align:center;" type="text" name="pkwiu" class="form-control"/></td><td ><input style="text-align:center;" type="text" name="ilosc" id="ilosc" class="form-control" value="0.00" placeholder="0.00" onchange="checkCyfra(this)" /></td><td><select name="jm" data-placeholder="szt" class="selectlist"><option value="">szt
</option><option selected="selected" value="szt">szt.
</option><option value="usl">usł.
</option> <option value="opak">opak.
</option><option value="godz">godz.
</option><option value="str">str.
</option><option value="m2">m2
</option></select></td><td ><input style="text-align:center;" type="text" name="cena_netto" id="cena_netto" value="0.00" placeholder="0.00" class="form-control" onchange="checkCyfra(this)" /></td><td ><select name="vat" data-placeholder="%" class="selectlist" ><option value="0">0
</option><option selected="selected" value="23">23
</option><option value="22">22
</option><option value="20">20
</option><option value="19">19
</option><option value="15">15
</option><option value="8">8
</option><option value="7">7
</option><option value="3">3
</option><option value="0">0
</option><option value="0">ZW
</option><option value="0">NP
</option></select></td><td ><input style="text-align:center;" type="text" name="wartosc_netto" id="wartosc_netto" value="0.00" onchange="checkCyfra(this)" class="form-control"/></td><td ><input style="text-align:center;" type="text" name="wartosc_brutto" id="wartosc_brutto" value="0.00" onchange="checkCyfra(this)" class="form-control"/></td></tr>';
$('#pozycje').find('tbody').append(row);
});
$('#zeby-kliknac').click(function(e) {
e.preventDefault();
console.log($('#basicForm4').serialize());
});
Dodalem tylko akcje, zeby klikanie w Zapisz fakturę generowalo log z zawartoscia formularza.
i przykladowe wywolanie.
1. log z danymi formularza przy 1 wierszu i po dodaniu 2 wiersza:
nazwa_pozycji1=&pkwiu=&ilosc=0.00&jm=szt&cena_netto=0.00&vat=23&wartosc_netto=0.00&wartosc_brutto=0.00&ilewierszy=1
nazwa_pozycji1=&pkwiu=&ilosc=0.00&jm=szt&cena_netto=0.00&vat=23&wartosc_netto=0.00&wartosc_brutto=0.00&ilewierszy=2&nazwa_pozycji2=&pkwiu=&ilosc=0.00&jm=szt&cena_netto=0.00&vat=23&wartosc_netto=0.00&wartosc_brutto=0.00
Jak widac dodalo nazwa_pozycji2 do nazwa_pozycji1. Ale dodalo tez dublujace sie klucze, takie jak pkwiu itp.
No i oczywiscie dodajac kolejne wiersze masz tez dublujace sie id w html, np. po dodaniu wiersza sa dwa inputy z ID ilosc, co jest bledne i beda problemy z uzywaniem selektorow w js.