简体   繁体   English

根据输入值对表行执行减法

[英]Perform subtraction on table row based on the the input value

I was wondering If the payment status is Y, can the price be subtracted accordingly. 我想知道如果付款状态为Y,是否可以相应减去价格。 The amount yet to be paid will show the subtraction result 尚未支付的金额将显示相减结果

For example, in this case, since both 50 and 10 is paid, the amount yet to be paid will be the "total (ie 70) minus (50+10)" = 10 例如,在这种情况下,由于同时支付了50和10,因此尚未支付的金额将是“总计(即70)减去(50 + 10)” = 10

Many thanks. 非常感谢。

 $(document).ready(function(){ $("#myTable").on('input', '.txtCal', function () { calculate(); }); function calculate() { var calculated_total_sum = 0; $("#myTable .txtCal").each(function () { var get_textbox_value = $(this).val(); if ($.isNumeric(get_textbox_value)) { calculated_total_sum += parseFloat(get_textbox_value); } }); $("#total_sum_value").html(calculated_total_sum); } calculate(); }); 
 <html> <head><script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> </head> <body> <table id="myTable"> <tr> <th width="100">Name </th> <th>Price</th><th>Payment status</th> </tr> <tr> <td><span>A</span></td> <td><input type="text" class='txtCal' value="50" /></td> <td><input type="text" class='status' value="Y" /></td> </tr> <tr> <td><span>B :</span></td> <td><input type="text" class='txtCal' value="10" /></td> <td><input type="text" class='status' value="Y" /></td> </tr> <tr> <td><span>C:</span></td> <td><input type="text" class='txtCal' value="10" /></td> <td><input type="text" class='status' value="N" /></td> </tr> <tr> <td><span><b>TOTAL :</b></span></td> <td><b><span id="total_sum_value"></span></b></td> </tr> <tr> <td><span><b>Yet to be paid</b></span></td> <td><b><span id="arrears"></span></b></td> </tr> </table> 

Yes, you can check the payment status column for N and sum those values. 是的,您可以检查“付款状态”列中是否为N并将这些值相加。 Like this: 像这样:

 $(document).ready(function() { $("#myTable").on('input', '.txtCal, .status', function() { calculate(); }); function calculate() { var calculated_total_sum = 0; var to_be_paid = 0; $("#myTable tr").each(function() { var get_textbox_value = $('.txtCal', this).val(); var get_payment_status = $('.status', this).val(); if (get_textbox_value && get_payment_status) { if ($.isNumeric(get_textbox_value)) { calculated_total_sum += parseFloat(get_textbox_value); } if (get_payment_status === 'N') { to_be_paid += parseFloat(get_textbox_value); } } }); $("#total_sum_value").html(calculated_total_sum); $("#arrears").html(to_be_paid); } calculate(); }); 
 <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> </head> <body> <table id="myTable"> <tr> <th width="100">Name </th> <th>Price</th> <th>Payment status</th> </tr> <tr> <td><span>A</span></td> <td><input type="text" class='txtCal' value="50" /></td> <td><input type="text" class='status' value="Y" /></td> </tr> <tr> <td><span>B :</span></td> <td><input type="text" class='txtCal' value="10" /></td> <td><input type="text" class='status' value="Y" /></td> </tr> <tr> <td><span>C:</span></td> <td><input type="text" class='txtCal' value="10" /></td> <td><input type="text" class='status' value="N" /></td> </tr> <tr> <td><span><b>TOTAL :</b></span></td> <td><b><span id="total_sum_value"></span></b></td> </tr> <tr> <td><span><b>Yet to be paid</b></span></td> <td><b><span id="arrears"></span></b></td> </tr> </table> 

Another solution would be, getting the parent for every iteration, it might a little less performance friendly but here you go: 另一个解决方案是,让每次迭代都获得父级,这可能会降低性能友好性,但您可以执行以下操作:

 $(document).ready(function(){ $("#myTable").on('input', '.txtCal', function () { calculate(); }); function calculate() { var calculated_total_sum = 0; var yet_to_be_paid = 0; $("#myTable .txtCal").each(function () { var get_textbox_value = $(this).val(); if ($.isNumeric(get_textbox_value)) { calculated_total_sum += parseFloat(get_textbox_value); } if($(this).parent().parent().find(".status").first().val() == "Y") { yet_to_be_paid += parseFloat($(this).val()); } }); $("#total_sum_value").html(calculated_total_sum); $("#arrears").html(calculated_total_sum - yet_to_be_paid); } calculate(); }); 
 <html> <head><script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> </head> <body> <table id="myTable"> <tr> <th width="100">Name </th> <th>Price</th><th>Payment status</th> </tr> <tr> <td><span>A</span></td> <td><input type="text" class='txtCal' value="50" /></td> <td><input type="text" class='status' value="Y" /></td> </tr> <tr> <td><span>B :</span></td> <td><input type="text" class='txtCal' value="10" /></td> <td><input type="text" class='status' value="Y" /></td> </tr> <tr> <td><span>C:</span></td> <td><input type="text" class='txtCal' value="10" /></td> <td><input type="text" class='status' value="N" /></td> </tr> <tr> <td><span><b>TOTAL :</b></span></td> <td><b><span id="total_sum_value"></span></b></td> </tr> <tr> <td><span><b>Yet to be paid</b></span></td> <td><b><span id="arrears"></span></b></td> </tr> </table> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM