我在jQuery中的结果给出了NaN

时间:2012-11-01 02:19:06

标签: javascript jquery

我得到NaN作为结果,因为我的jquery乘以看起来像"204,3 * 3"的数字

我该如何处理?

我无法改变价格,所以我该怎么办?

"234 * 2"只要数字',' NaN我就会正常工作。

<script type="text/javascript">
    $('.quantity').keyup(function () {
        var parent = $(this).parent(),
            price = parent.find('.price').html(),
            quantity = parent.find('.quantity').val(),
            result = price * quantity;
        parent.find('.price2').html(result);
    });
</script>

     <span class="price">69,9</span>
     <input type="text" class="quantity">    
     <span class="price2">69,9</span>
     <span class="total">Total:</span>
     <div class="line2"></div>

Check my JSfiddle everything is there

感谢任何形式的帮助

3 个答案:

答案 0 :(得分:4)

Javascript使用北美数字格式,这意味着,用作thousands seperator.用于decimal separator

您的问题有两个解决方案:

  • 教您的用户输入1000.25
  • 等数字
  • 编写例程以将1.000,25变为1000.25

String.prototype.replace将是您第二选择的朋友。

答案 1 :(得分:1)

您正在尝试乘以字符串...使用parseFloat()和replace()方法,如jsFiddle更新here

中所示
 $('.quantity').keyup(function () {
    var parent = $(this).parent(),
        price = parent.find('.price').html().replace(',', '.'),
        quantity = parent.find('.quantity').val().replace(',','.'),
        result = parseFloat(price) * parseFloat(quantity);
    parent.find('.price2').html(result);
});

答案 2 :(得分:1)

在这里乘以两个字符串而不是数字..

使用 parseInt with radix

转换它们

OR

使用 parseFloat

转换它们

更改此行

 result = price * quantity;

result = parseInt(price,10) * parseInt(quantity,10);

OR

result = parseFloat(price) * parseFloat(quantity);