1

我正在尝试创建一个计算器,它获取输入字段(数量)的值,然后在公式中使用并输出到跨度元素(三次)中。这一切都在工作。请看我的jsfiddle。

示例代码

<input id="07flute" type="text" value="0" />
<span id="cubics"></span>

$("#07flute").keyup(function () {
    var val = parseFloat($(this).val());
    val = (val ? val / 50 * 0.0113 : "Invalid number");
    $("#cubics").text(val);
});

我现在想在该表中添加总计 Quantity 和 Cubics 的计算,但我不确定如何从 span 元素计算这些。任何帮助表示赞赏。谢谢。

更新http://jsfiddle.net/weedy/vcD9A/

编辑后的答案

function total() {
var total = 0;
$('span.cubics').each(function() {
    var n = parseFloat($(this).text());
    total += isNaN(n) ? 0 : n;
});
$('.totalcubics').text(total.toFixed(2));
}

$('input.qty').keyup(function() {
var val = parseFloat($(this).val());
val = (val ? val / 50 * $(this).data('cubics') : '');
$(this).closest('td').next().find('span.cubics').text(val);
total();
});

var $form = $('#my-form'),
$summands = $form.find('input'),
$sumDisplay = $('span#totalquantity');

$form.keyup(function()
{
var sum = 0;
$summands.each(function ()
{
    var value = Number($(this).val());
    if (!isNaN(value)) sum += value;
});

$sumDisplay.text(sum);
});

http://jsfiddle.net/weedy/zn9kv/

4

3 回答 3

1

检查这个 doSum 函数:

function doSum(){
    var one = parseFloat($("#cubics").text(),10);
    if(isNaN(one)) one = 0; 
    var two = parseFloat($("#cubics2").text(),10);
    if(isNaN(two)) two = 0; 
    var three = parseFloat($("#cubics3").text(),10);    
    if(isNaN(three)) three = 0;     
    $('.totalcubics').text(one+two+three); 
}
$("#07flute").keyup(function () {
    var val = parseFloat($(this).val());
    val = (val ? val / 50 * 0.0113 : "Invalid number");
    $("table #cubics").text(val);
    doSum();
});

$("#08flute").keyup(function () {
    var val = parseFloat($(this).val());
    val = (val ? val / 50 * 0.0128 : "Invalid number");
    $("#cubics2").text(val);
    doSum();
});

$("#09flute").keyup(function () {
    var val = parseFloat($(this).val());
    val = (val ? val / 50 * 0.0128 : "Invalid number");
    $("#cubics3").text(val);
    doSum();
});

工作小提琴:http: //jsfiddle.net/basarat/UHfR8/

于 2013-05-23T02:21:45.357 回答
1

当您竞标多个keyup处理程序时,我建议使用辅助函数:

function total() {
    $('.totalcubics').html(function() {
        var total = 0;
        $('table').find('span').not(this).each(function () {
            var n = parseFloat($(this).text());
            total += isNaN(n) ? 0 : n;
        });
        return total;
    })
}

http://jsfiddle.net/nJW7u/

于 2013-05-23T02:25:40.560 回答
0

Underscore 的reduce方法将是完美的。http://underscorejs.org/#reduce

于 2013-05-23T02:21:11.323 回答