Javascript 计算每行费率变化的金额
下面是我的表,它是动态生成的。表示通过查询结果循环生成行。但我在这里显示为简单的html,以避免混淆Javascript 计算每行费率变化的金额,javascript,jquery,Javascript,Jquery,下面是我的表,它是动态生成的。表示通过查询结果循环生成行。但我在这里显示为简单的html,以避免混淆 <table> <thead> <tr> <th>Particulars</th> <th>Packing</th> <th>Quantity</th> <th>Rate</th> <th>Amount</th> </tr> &l
<table>
<thead>
<tr>
<th>Particulars</th>
<th>Packing</th>
<th>Quantity</th>
<th>Rate</th>
<th>Amount</th>
</tr>
</thead>
<tr>
<td>1</td>
<td>1</td>
<td>
<input type='text' class='quantity' style='width:80%;' readonly='' value='".$row->quantity."'/>
</td>
<td><input type="text" name="rate"></td>
<td><input type='text' style='width:100%;' class='amount' readonly=''/></td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>
<input type='text' class='quantity' style='width:80%;' readonly='' value='".$row->quantity."'/>
</td>
<td><input type="text" name="rate"></td>
<td><input type='text' style='width:100%;' class='amount' readonly=''/></td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>
<input type='text' class='quantity' style='width:80%;' readonly='' value='".$row->quantity."'/>
</td>
<td><input type="text" name="rate"></td>
<td><input type='text' style='width:100%;' class='amount' readonly=''/> </td>
</tr>
</table>
详情
包装
量
比率
数量
1.
1.
1.
1.
1.
1.
每一行的费率和数量将不同。所以我想要数量和速率的值,然后将它们相乘,并在各自的td输入框中显示数量。问题是用户要为每一行输入费率,然后在金额输入框中只显示金额。那我该怎么做呢?使用jquery或使用rate div的模糊事件或任何其他方法???您需要检查rate输入字段的模糊程度。每次模糊时,使用适当的选择器获取数量值。使用其他函数可以更轻松地完成此操作。请尝试研究它。您需要根据每个输入进行验证,以检查它是否有效。希望这对您有所帮助:) 拨弄 FYI 不要复制粘贴代码。请尝试阅读更多正在使用的函数 您可以这样使用它来防止在文本框中键入字符串
$('body').on('blur','rate',函数(e){
var行=$(此);
e=(e)?e:window.event;
var charCode=(e.which)?e.which:e.keyCode;
如果(charCode>31&&charCode!=8&&charCode<48|charCode>57)){
返回false;
}
findSum(世界其他地区)
返回true;
});
函数findSum(obj){
var总和=0;
var rate=parseInt(obj.val());
var qty=parseInt(对象最近('tr').find('.quantity').val());
总和=费率*数量;
如果(!isNaN(总和)){
对象最近('tr')。查找('amount')。val(总和);
}
否则{
对象最近('tr')。查找('amount')。val('0');
}
}
小提琴:
jquery blur是您在这里的最佳选择。您需要在一个
tr
中唯一地标识每个div,并根据用户输入的数据乘以该值。我已经这样做了,但当我更改第一行的比率时,它会将计算出的金额分配给每行的金额输入框耶,这就是您需要唯一标识每个tr
的原因。您尚未为您的td
sw中的任何一个指定id,您正在使用的jquery版本是什么?您需要将('blur'上的替换为live('blur'
我应该说,你现在正在使用一个非常旧的jQuery版本。请尝试更新ituse每个
函数伴侣。检查这个@KedarB,我认为你应该打开一个新的问题伴侣。:)
$('input[name=rate]').on('blur',function(){
var rate=$(this).val();
var quantity = $(this).parent().parent().find('.quantity').val();
var amount = rate*quantity;
$(this).parent().parent().find('.amount').val(amount);
});
$('body').on('blur', '.rate',function(e){
var row = $(this);
e = (e) ? e : window.event;
var charCode = (e.which) ? e.which : e.keyCode;
if (charCode > 31 && charCode!=8 && (charCode < 48 || charCode > 57)) {
return false;
}
findSum(row)
return true;
});
function findSum(obj){
var sum = 0;
var rate = parseInt(obj.val());
var qty = parseInt(obj.closest('tr').find('.quantity').val());
sum = rate*qty;
if(!isNaN(sum)){
obj.closest('tr').find('.amount').val(sum);
}
else{
obj.closest('tr').find('.amount').val('0');
}
}