将输入与JQuery相乘

时间:2014-02-21 01:57:11

标签: 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[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]和price [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());
}
});

任何帮助?

代码:http://jsfiddle.net/gilbertogm85/XSAk5/1/

2 个答案:

答案 0 :(得分:1)

您可以尝试使用this

$(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,\.]+$"); }
});

答案 1 :(得分:0)

您的代码中存在语法错误,{语句缺少for。另请注意,parseFloat函数只接受1个参数,似乎您要使用接受基数作为第二个参数的parseInt函数。

您可以选择最接近的for,然后设置值,而不是使用不必要的tr循环:

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