-1
$('.field-name-field-weight-1 input').change(function(){
    var wt1 = $(this).val();
    var the = $(this).parent().parent().parent().parent();
    var wt2 = the.find('.field-name-field-weight-2 input').val();
    var total = parseFloat(wt1) - parseFloat(wt2);
    var result = the.find('.field-name-field-weight-3 input').val(total.toFixed(2));
});

$('.field-name-field-weight-2 input').change(function(){
    var wt2 = $(this).val();
    var the = $(this).parent().parent().parent().parent();
    var wt1 = the.find('.field-name-field-weight-1 input').val();
    var total = parseFloat(wt1) - parseFloat(wt2);
    var result = the.find('.field-name-field-weight-3 input').val(total.toFixed(2));
});
}
};
})(jQuery);

我有这段代码。我想摆脱NaN. 基本上,当我在 weight-1 字段中输入一个数字时,它会显示NaNweight-3字段中。我想摆脱这个。

提前致谢。

4

1 回答 1

1

只需测试NaN

if (!isNaN(total)) {
    // Put it in the field...
}

NaN更好的是,在计算的早期捕获结果(就在parseFloat执行wt1and之后wt2),并向用户指出相关的无效字段值。


回复您的评论:

如果我把上面的内容放在结果字段中,我什么也看不到

如果您总是想更新结果,即使您有无效的输入,只需使用 anelse并填写您希望输入无效时的结果。或者您可以使用三元运算符:

var result = the.find('.field-name-field-weight-3 input').val(
    isNaN(total) ? '' : total.toFixed(2)
);

当输入无效时,这会将结果字段设置为空白。但同样,我会发现哪个输入无效并让用户知道。

于 2013-02-08T09:25:30.337 回答