将输入与JQuery相乘
我正在尝试使用JQuery将输入值相乘将输入与JQuery相乘,jquery,math,input,Jquery,Math,Input,我正在尝试使用JQuery将输入值相乘 <tr> <td><input type="text" name="qtd[1]" size="2" /></td> <td><input type="text" name="price[1]" size="10" /></td> <td><input type="text" name="total[
<tr>
<td><input type="text" name="qtd[1]" size="2" /></td>
<td><input type="text" name="price[1]" size="10" /></td>
<td><input type="text" name="total[1]" size="10" /></td>
</tr>
<tr>
<td><input type="text" name="qtd[2]" size="2" /></td>
<td><input type="text" name="price[2]" size="10" /></td>
<td><input type="text" name="total[2]" size="10" /></td>
</tr>
<input type="hidden" value="2" name="qtd_itens" />
基本上,我试图在用户填写qtd[i]和价格[i]后立即显示总[i]
$(':input').bind('keypress keydown keyup change',function(){
for ($i = 0; $i < $(':input[name="qtd_itens"]').val(); $i++)
var acho = parseFloat($(':input[name="qtd[' + $i + ' ]"]').val(),10),
alto = parseFloat($(':input[name="price[' + $i + ']"]').val(),10);
var v = '';
if (!isNaN(acho) && !isNaN(alto)){
v = (acho * alto);
}
$(':input[name="total[' + $i + ']"]').val(v.toString());
}
});
$(':input').bind('keypress-keydown-keydup-change',function(){
对于($i=0;$i<$(':input[name=“qtd_itens”]”)。val();$i++)
var acho=parseFloat($(':input[name=“qtd['+$i+']”“]')).val(),10),
alto=parseFloat($(':input[name=“price['+$i+']”“]')。val(),10);
var v=“”;
如果(!isNaN(acho)&&!isNaN(alto)){
v=(阿乔*阿尔托);
}
$(':input[name=“total['+$i+']”]).val(v.toString());
}
});
有什么帮助吗
代码:您的代码中有语法错误,缺少
{
for语句的{
。还要注意的是parseFloat
函数只接受一个参数,似乎您想使用parseInt
函数,该函数接受基数作为第二个参数
您可以选择最近的tr
,然后设置值,而不是使用不必要的for
循环:
$('input').on('keyup change', function (e) {
var $i = $(this).closest('tr').find('input'),
acho = parseFloat($i.eq(0).val()),
alto = parseFloat($i.eq(1).val()),
val = (acho * alto);
if ( !isNaN(val) ) {
$i.eq(2).val(val);
}
});
您可以尝试以下方法:
工作正常..我只有另一个问题..我们使用1.230,00这样的价格,但如果我把它作为一个价格,它会给我一个NaN结果..我如何解决这个问题?还有..我更改了行var total=prc.val()*parseFloat(qty.val(),2);那不起作用……我试过数量3,价格3.120,00应该给我总共9.360,00,它给了我9.36……你知道怎么了吗?@GilbertoGonçalvesMachado,确保值是
9360.00
而不是9.360,00
我假设了这种格式。@GilbertoGonçalvesMachado,哦!我想1000.00
你需要更新还是g是否需要另一个?@GilbertoGonçalvesMachado更新了但不是一个好的IMO
。效果更好。但同样的事情..忽略逗号后的数字..我怎么做才能不忽略这些数字?@GilbertoGonçalvesMachado您可以使用JavaScriptreplace
方法将逗号替换为空字符串。After计算您可以使用正则表达式格式化结果。SO上有许多相关问题。
$(function(){
$('input[name^="price"]').on('keyup change',function(){
var prc = $(this),
qty = prc.closest('tr').find('input[name^="qtd"]'),
tot = prc.closest('tr').find('input[name^="total"]');
if(check(prc.val()) && check(qty.val())) {
var p = parseFloat((prc.val()).replace(',','')),
q = parseFloat((qty.val()).replace(',', '')),
total = p * q;
$(tot.val(total.toFixed(2)));
}
});
function check($val) { return $val.match("^[0-9,\.]+$"); }
});