JavaScript / JQuery:从字段中添加数字来计算未定义(带0)

时间:2014-10-31 18:09:00

标签: javascript jquery

我有2个输入字段和第3个输入字段" Total"。每当两个中的任何一个发生变化时,必须用总和更新总数。

此计算必须考虑空/未定义的值。有快速的方法吗?我正在使用Number(x)。它会照顾未出现的价值观吗?在未输入的情况下,应该假定为0.

   $('#field1').on("change", function() {
        updateTotalCosts();
    });
   $('#field2').on("change", function() {
        updateTotalCosts();
    });           
   function updateTotalCosts() {
       var f1 = $('#field1').val();
       var f2 = $('#field2').val();
       $('#total').val( Number(f1) + Number(f2) );

3 个答案:

答案 0 :(得分:3)

var f1 = +$('#field1').val() || 0;

一元+运算符将结果强制转换为数字(或尝试),如果结果为假,则替换为0。

答案 1 :(得分:2)

注意change失去焦点后input事件触发。您可能希望改为使用input事件。

要将字符串转换为数字,您可以使用一元运算符+代替Number

如果某个表达式是假的,则默认为0,您可以使用expr || 0

var field1 = document.getElementById('field1'),
    field2 = document.getElementById('field2'),
    total = document.getElementById('total');
field1.oninput = field2.oninput = function updateTotalCosts() {
  total.value = (+field1.value || 0) + (+field2.value || 0);
};
<input id="field1" />
+ <input id="field2" />
= <input id="total" />

或者,使用jQuery,

var $field1 = $('#field1'),
    $field2 = $('#field2'),
    $total = $('#total');
$field1.add($field2).on('input change', function updateTotalCosts() {
  $total.val((+$field1.val() || 0) + (+$field2.val() || 0));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="field1" />
+ <input id="field2" />
= <input id="total" />

答案 2 :(得分:1)

如果它们是整数值,请使用~~将字符串(undefined转换为0)转换为整数。

var one;
var two = "2";
var total = ~~one + ~~two;
alert(total);            // Alerts 2

这适用于正整数和负整数: http://jsfiddle.net/TrueBlueAussie/heuoLu3d/ http://jsfiddle.net/TrueBlueAussie/heuoLu3d/1/

对于花车使用@Jared Smith的回答