使用文本输入字段时出现的JN中的NaN

我正在尝试使用一个简单的javascript函数,该函数旨在与单个数字的SELECT下拉列表一起使用,但现在我需要在访问者输入带小数点的值时使用它。 即使我输入30或任何数字,我使用当前的javascript获得NaN。 关于如何获得我的总数的任何建议?

JAVASCRIPT:

$(function () { $('.DoPricing').change(function () { var total = 0; $('.DoPricing').each(function () { total += parseInt($(this).val()); }); $('#TotalPrice').html('$' + total); }); }); 

HTML:

 
How much will you be paying today? $
Total Amount Due Today: $0.00

试试这个:

 $(function () { $('.DoPricing').on("keyup",function () { var total = 0; $('.DoPricing').each(function () { total += parseFloat($(this).val()) || 0; }); $('#TotalPrice').html('$' + total); }); }); 

现在接受小数,这是演示

你的基本例子对我有用。 我猜测页面上有其他元素与类,但不一定有值 ,并且你希望它们默认为零。 当输入没有值时, .val()返回空字符串,而parseInt('', 10)返回NaN ,而不是0 ,所以你没有得到你想要的。

这很容易修复:

 total += parseInt($(this).val()) || 0; 

演示: http : //jsfiddle.net/mattball/2rgku

我假设你也想要小数,但你使用的是parseInt而不是parseFloat,如果你使用小数(因为它是钱),那么你应该使用toFixed。 在下面的代码中,我假设用户将使用。 作为小数符号,应该只有一个。 在值(没有千位分隔符)。

在你的每个你转换一个完美的好用这个jQuery对象只是为了获得值。 我已将$(this).val()更改为this.value,因此不需要转换。

    test    
How much will you be paying this morning? $
How much will you be paying this evening? $
Total Amount Due Today: $0.00