Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算每行费率变化的金额_Javascript_Jquery - Fatal编程技术网

Javascript 计算每行费率变化的金额

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

下面是我的表,它是动态生成的。表示通过查询结果循环生成行。但我在这里显示为简单的html,以避免混淆

<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');
    }    
}