Jquery计算,删除输入内容时删除NaN

Jquery计算,删除输入内容时删除NaN,jquery,html,Jquery,Html,我正在构建一个简单的计算器,客户可以将信用添加到他们的帐户中,除了下面的错误之外,一切都正常工作 错误: 当您输入一个值时,一切正常,如果您单击“离开”,然后单击“返回”编辑并删除您得到的NaN值,我希望它默认为0.00,而不是显示NaN 我可以自由地查看JS并尽可能地进行优化,因为我只不过是把它一刀切 HTML: 学分: &磅;1000.00 加: 总数: JS: $.fn.sumValues=函数(){ var总和=0; 这个。每个(函数(){ if($(this).is(':input'

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

错误: 当您输入一个值时,一切正常,如果您单击“离开”,然后单击“返回”编辑并删除您得到的NaN值,我希望它默认为0.00,而不是显示NaN

我可以自由地查看JS并尽可能地进行优化,因为我只不过是把它一刀切

HTML:

学分:
&磅;1000.00
加: 总数:
JS:

$.fn.sumValues=函数(){
var总和=0;
这个。每个(函数(){
if($(this).is(':input')){
var val=$(this.val();
}否则{
var val=$(this.text();
}
sum+=parseFloat(('0'+val).replace(/[^0-9-\.]/g',),10);
});
回报金额;
};
$(文档).ready(函数(){
$('#pricetoadd').blur(函数(){
var num=parseFloat($(this.val());
var cleanNum=num.toFixed(2);
$(this).val(cleanNum);
if(num<1){
$(“#错误”).text('请只输入两位小数,我们已截断了多余的点');
}
});
$('input.price').bind('keyup',function(){
$('span.total').html($('price').sumValues().toFixed(2));
});
});
工作示例:

只需添加一个小的健全检查:

$('#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');
    }
});
$('#pricetoadd').blur(函数(){
var num=parseFloat($(this.val());
var cleanNum=num.toFixed(2);
cleanNum=isNaN(cleanNum)‘0.00’:cleanNum;
$(this).val(cleanNum);
if(num<1){
$(“#错误”).text('请只输入两位小数,我们已截断了多余的点');
}
});

只需添加一个小的健全检查:

$('#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');
    }
});
$('#pricetoadd').blur(函数(){
var num=parseFloat($(this.val());
var cleanNum=num.toFixed(2);
cleanNum=isNaN(cleanNum)‘0.00’:cleanNum;
$(this).val(cleanNum);
if(num<1){
$(“#错误”).text('请只输入两位小数,我们已截断了多余的点');
}
});

+1。由于
NaN
是falsy,您甚至可以将其写成
var cleanNum=(num | | 0).toFixed(2)
@DavidHedlund-我没想过,但你是对的,或者也可以。我总是倾向于使用三元进行简单的值检查。@adeneo如果我升级到jquery 1.9,它会中断,你能告诉我吗?@RoyBarber-breaks到底是如何中断的?+1。由于
NaN
是falsy,您甚至可以将其写成
var cleanNum=(num | | 0).toFixed(2)
@DavidHedlund-我没想过,但你是对的,或者也可以。我总是倾向于使用三元进行简单的值检查。@adeneo如果我升级到jquery 1.9,它会中断,你能告诉我吗?@RoyBarber-breaks到底是如何中断的?
$('#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');
    }
});