我是jQuery的新手,我在jQuery表中工作。当我添加第0行,第1行和第2行并删除第2行时,一切都很好。问题是当我删除第0行或第1行时。如果我删除第0行,那么它只是返回索引行1.当我删除第1行时,它返回索引行0。
jQuery(function () {
var i = -1;
function updateTotal() {
var total = 0;
$('.qty').each(function () {
var $this = $(this);
var qty = parseInt($this.val());
var index = $(this).prop('name').match(/\[(.*?)\]/)[1];
var price = $('input[name^=price]').eq(index).val();
var t = document.getElementById('tab');
var val1 = $(t.rows[parseInt(index)+1].cells[0]).text();
alert(index);
$.get('engine.php?kode='+val1+'&button=getStock' , function(data) {
if(qty > 0 && qty <= data) {
$('input[name^=sub]').eq(index).val(price*qty);
total += parseInt(price*qty);
}
else {
alert("wrong quantity");
$('.qty').eq(index).val("1");
$('input[name^=sub]').eq(index).val(price);
total = total+parseInt(price);
}
$('.total').text(total);
});
})
}
$('#tab').on('change', '.qty', function(){
updateTotal();
});
$('input[name=barcode]').keydown(function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if(code==13) {
i = i+1;
var $this = $(this);
var code = $(".barcode").val();
$.get('engine.php?kode='+code +'&button=getData' , function(data) {
var arrayObj = JSON.parse(data);
var k=0;
var arr = [];
$.each(arrayObj , function(key, value) {
arr[k] = value;
k++;
});
var newRow = $("<tr align='center'><td class='code'>" + $this.val() + "</td>" +
"<td> "+arr[0]+" </td> <td> "+arr[1]+" </td> "+
" <td><input class='price' required type='text' name='price["+(i)+"]' size='10' maxlength='9' pattern='.{1,9}' value='"+arr[2]+"'> </td> <td class='stok'> "+arr[3]+" </td>"+
" <td> <input class='qty' required type='text' name='qty["+(i)+"]' size='3' maxlength='4' pattern='.{1,4}' value='1'> </td> "+
"<td><input type='text' name='sub["+(i)+"]' size='10' value='"+arr[2]+"' disabled></td>"+
"<td><a href='#' class='remove'><font color='0404B4'>Cancel</font></a></td>"+
"<input type='hidden' name='code[]' value='"+code+"'></tr>");
var row = $('#tab > tbody > tr').eq(i);
if (row.length) {
row.after(newRow);
} else {
$('#tab > tbody').append(newRow);
}
updateTotal();
});
return false;
}
});
$('#tab').on('click', '.remove', function(){
$(this).closest("tr").remove();
updateTotal();
});
});