Since you're using jquery you could avoid the inline event and give your inputs a general classes then create an event for all inputs :
<input type="text" class='quantity' name="tb1" onkeyup="calculateTotal()" value="<?php echo $row['quantity']; ?>" />
<input type="hidden" class='total' name="total" value="<?php echo $row['amount']; ?>" />
<span class="total_amount"></span>
JS :
$('.quantity').on('input', function(){
var form = $(this).closest('form');
var totalAmt = parseInt(form.find('.total').val());
var quantity = parseInt($(this).val());
form.find('.total_amount').text(totalAmt*quantity);
})
NOTE : The form should be inside same td
.
Hope this helps.
$('.quantity').on('input', function(){
var form = $(this).closest('form');
var totalAmt = parseInt(form.find('.total').val());
var quantity = parseInt($(this).val());
form.find('.total_amount').text(totalAmt*quantity);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input type="text" class='quantity' name="tb1" value="1" />
<input type="hidden" class='total' name="total" value="10" />
<span class="total_amount">10</span>
</form>
<form>
<input type="text" class='quantity' name="tb1" value="2" />
<input type="hidden" class='total' name="total" value="10" />
<span class="total_amount">20</span>
</form>
<form>
<input type="text" class='quantity' name="tb1" value="3" />
<input type="hidden" class='total' name="total" value="10" />
<span class="total_amount">30</span>
</form>
Without forms :
$('.quantity').on('input', function(){
var parent = $(this).closest('tr');
var totalAmt = parseInt(parent.find('.total').val());
var quantity = parseInt($(this).val());
parent.find('.total_amount').text(totalAmt*quantity);
calcul_total_quatities();
})
function calcul_total_quatities()
{
var total = 0;
$('.total_amount').each(function(){
total += parseInt( $(this).text() );
})
$('.total_all_amounts').text(total);
post_data_to_server($('.total_amount').val(),total);
}
function post_data_to_server(total_amount,total_all_amounts)
{
$.ajax({
type: 'post',
url: 'your_page.php',
data: {
total_amount: total_amount,
total_all_amounts: total_all_amounts
},
success: function( data ) {
//'data' represent the message back from the PHP page
console.log( data );
}
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>Id</td>
<td>Product</td>
<td>Quantity</td>
<td>Total</td>
</tr>
<tr>
<td>ID</td>
<td>Product</td>
<td>
<input type="text" class='quantity' name="tb1" value="1" />
</td>
<td><input type="hidden" class='total' name="total" value="10" /></td>
<td><span class="total_amount">10</span></td>
</tr>
<tr>
<td>ID</td>
<td>Product</td>
<td>
<input type="text" class='quantity' value="2" />
</td>
<td><input type="hidden" class='total' value="10" /></td>
<td><span class="total_amount">20</span></td>
</tr>
<tr>
<td>ID</td>
<td>Product</td>
<td>
<input type="text" class='quantity' value="3" />
</td>
<td><input type="hidden" class='total' value="10" /></td>
<td><span class="total_amount">30</span></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td><span class="total_all_amounts">60</span></td>
</tr>
</table>