求和所有html字段的货币值

时间:2015-12-13 18:02:51

标签: javascript html

我有一个函数来对具有相同ID的值求和; jsFiddle。这是有效的,但不是如果是小数值,如金钱价值。 (10,05 + 1.005,10,例子)

$('#button-cart').on('click', function() {
    var MaxSelectionNum = "7";
    var sum = 0;

    // Loop through all inputs with names that start
    // with "option-quantity" and sum their values
    $('input[name^="option-quantity"]').each(function()
    {
        console.log(parseInt($(this).val()));
        sum += parseInt($(this).val()) || 0;
    });

    if (sum < MaxSelectionNum)
    {
        $(".errorQuantity").html("Please select 7 meals").show();
    }
    else
    {
        $(".errorQuantity").html("You have select greater than 7: meal count:  " + sum).show();
    }
});

我们如何解决?

4 个答案:

答案 0 :(得分:2)

处理小数值时,请使用parseFloat代替parseInt

parseInt()函数解析字符串参数并返回整数或NaN。如果不是NaN,则返回的值将是传入的字符串的整数表示。

parseFloat()函数解析字符串参数并返回浮点数或Nan(如果字符串表达式无法转换为数值)。

Here是一个工作样本。

答案 1 :(得分:1)

您必须使用 parseFloat

只需使用以下代码替换当前代码:

$('#button-cart').on('click', function() {
    var MaxSelectionNum = "7";
    var sum = 0;

    // Loop through all inputs with names that start
    // with "option-quantity" and sum their values
    $('input[name^="option-quantity"]').each(function()
    {
        console.log(parseFloat($(this).val()));
        sum += parseFloat($(this).val()) || 0;
    });

    if (sum < MaxSelectionNum)
    {
        $(".errorQuantity").html("Please select 7 meals").show();
    }
    else
    {
        $(".errorQuantity").html("You have select greater than 7: meal count:  " + sum).show();
    }
});

这会帮助你:)。

答案 2 :(得分:1)

我已经更新了你的脚本(js第10-16行)

https://jsfiddle.net/La18Lcns/10/

如果您想使用数字标记,例如

1.142,32
23.456,5
1.500

首先,您需要将其转换为浮动格式

1142.32
23456.5
1500

比使用parseFloat()代替ParseInt()

答案 3 :(得分:0)

$('#button-cart').on('click', function()
{
    var MaxSelectionNum = "7";
    var sum = 0;

    // Loop through all inputs with names that start
    // with "option-quantity" and sum their values
    $('input[name^="option-quantity"]').each(function()
    {
        console.log(parseFloat($(this).val()));
        sum += parseFloat($(this).val()) || 0;
    });

    if (sum < MaxSelectionNum)
    {
        $(".errorQuantity").html("Please select 7 meals").show();
    }
    else
    {
        $(".errorQuantity").html("You have select greater than 7: meal count:  " + sum).show();
    }
});