将输入与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[

我正在尝试使用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[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您可以使用JavaScript
replace
方法将逗号替换为空字符串。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,\.]+$"); }
});