1

我正在构建一个简单的计算器,客户可以在其中将信用添加到他们的帐户中,除了以下错误之外,一切正常。

错误:当您输入一个值时,一切都很好,如果您单击离开然后单击返回以编辑并删除您获得 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/

4

1 回答 1

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');
    }
});

小提琴

于 2013-04-08T11:44:50.747 回答