Jquery Calculation,删除输入内容时删除NaN

时间:2013-04-08 11:42:15

标签: jquery html

我正在构建一个简单的计算器,客户可以在其帐户中添加信用,一切都与下面的错误分开。

错误: 当你输入一个值时一切都很好,如果你点击,然后点击返回编辑并删除你得到NaN的值,我希望它默认为0.00而不是显示NaN

随意看看JS并优化你可以在哪里,因为我只是一起屠杀了它。

HTML:

Credit:
<span id="price01" class="price">&pound;1000.00</span><br/>

Add: <input type="text" id="pricetoadd" placeholder="0.00" name="price02" class="price">

Total: <span class="total"></span>

JS:

$.fn.sumValues = function() {
        var sum = 0;
        this.each(function() {
            if ( $(this).is(':input') ) {
                var val = $(this).val();
            } else {
                var val = $(this).text();
            }
            sum += parseFloat( ('0' + val).replace(/[^0-9-\.]/g, ''), 10 );
        });
        return sum;
    };

    $(document).ready(function() {
        $('#pricetoadd').blur(function(){
            var num = parseFloat($(this).val());
            var cleanNum = num.toFixed(2);
            $(this).val(cleanNum);
        if(num < 1){
            $('#error').text('Please enter only 2 decimal places, we have truncated extra points');
            }
        });

        $('input.price').bind('keyup', function() {
            $('span.total').html( $('.price').sumValues().toFixed(2) );
        });
    });

工作示例: http://jsfiddle.net/gRjz7/

1 个答案:

答案 0 :(得分:4)

只需添加一点健全性检查器:

$('#pricetoadd').blur(function(){
    var num = parseFloat($(this).val());
    var cleanNum = num.toFixed(2);

   cleanNum = isNaN(cleanNum) ? '0.00' : cleanNum;

    $(this).val(cleanNum);

    if(num < 1){
        $('#error').text('Please enter only 2 decimal places, we have truncated extra points');
    }
});

FIDDLE