我有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) );
答案 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的回答