Tengo un botón que cuando hace clic en él agrega campos de entrada en un div, estos valores provienen de la solicitud ajax.
var i = 0; $(document).on('click', '#add-btn', function() { ++i; var user = $('#productName').attr('value'); var price = $('#price').attr('value'); $.ajax({ //create an ajax request to display.php type: "GET", url: "getPrice.php", data: {user:user, price:price}, dataType: "html", //expect html to be returned success: function(response){ $("#dynamicAddRemove").append('<tr style="height:5em;" id="tr"><td><input name="productName['+i+']" readonly class="form-control" type="text" value="'+user+'"/></td><td><div class="quantit buttons_added"><input class="form-control quantity" id="number" type="number" name="qty[' + i + ']" value="1"/></div></td><td><input class="form-control amount" type="text" readonly value="'+price+'" name="price[' +i +']"/></td><td class="td"><input type="text" value="'+price+'" name="subTotal['+i+']" placeholder="Subtotal" class="form-control subtotal" id="grandTotal" readonly/><td><button type="button" name="add" class="btn btn-danger remove-tr">-</button></td>'); } }); });después de agregar los campos de entrada, ahora quiero agregar todos los valores del subtotal para obtener grandTotal.
var iSum = 0; $(document).on('mouseout', '.amount , .quantity, #addvalue', function() { iSum = 0; $('input[name="subTotal[]"]').each(function(){ var LiSum =parseInt($('input[name="subTotal[]"]').val()); if(LiSum != undefined || LiSum != ''){ iSum+=LiSum; } }); $('#sum').html(iSum); alert(iSum); });después de agregar valores con éxito, sigo obteniendo 0 como grandTotal
Reemplace $('input[name="subTotal[]"]') por $('input[name^="subTotal"]') . Esto encontrará todos los campos de entrada con nombres que comiencen con "subTotal". El nombre "subTotal[]" que estaba buscando originalmente no aparece en ninguna parte de su marcado.