我有一个函数来对具有相同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();
}
});
我们如何解决?
答案 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();
}
});