原谅我,但我刚开始学习Javascript。我正在尝试获取两个输入字段的总和,并且我想在每个keyup事件上更新结果“live”。
当输入值输入值时,结果字段刚刚消失。
我做错了什么?
非常感谢你,
彼得
编辑:我多么愚蠢,我忘记发布代码
var inputFirst = $('#first'),
inputSecond = $('#second'),
inputFirstVal = inputFirst.val(),
inputSecondVal = inputSecond.val();
function getResult(first, second) {
var result = first + second;
$('p#result').text(result);
};
inputFirst.on('keyup', function() {
getResult(inputFirstVal, inputSecondVal);
});
inputSecond.on('keyup', function() {
getResult(inputFirstVal, inputSecondVal);
});
答案 0 :(得分:1)
inputFirstVal = inputFirst.val(),
inputSecondVal = inputSecond.val();
这些变量仅初始化一次。您需要在想要读取当前值的时刻致电val()
。
请参阅http://jsfiddle.net/u7VwP/7/
更新:已添加parseInt
,因此您需要添加数字而不是字符串。
请注意以下语法:
first = parseInt(first) || 0;
如果parseInt
的结果是假的(如NaN
“而不是数字”当我们无法解析数字或文字0时),则该值默认为右侧的||
运算符,0。
答案 1 :(得分:0)
从我的评论中,getResult函数将以:
结尾function getResult() {
inputFirstVal = inputFirst.val(),
inputSecondVal = inputSecond.val();
var result = inputFirstVal + inputSecondVal ;
$('p#result').text(result);
};
因为改变你只需要调用函数:
inputFirst.on('keyup', getResult);
inputSecond.on('keyup', getResult);
答案 2 :(得分:0)
var inputFirst = $('#first'),
inputSecond = $('#second'),
inputFirstVal = inputFirst.val(),
inputSecondVal = inputSecond.val();
function getResult(first, second) {
var result = (parseInt(first) || 0) + (parseInt(second) || 0);
//field.val() returns strings not numbers so parsing to ints. If letter is passed, consider it as 0
$('p#result').text(result);
};
function handler()
{
getResult(inputFirst.val() || 0, inputSecond.val() || 0);
// if value is null or undefined pass 0 to the function
}
inputFirst.on('keyup', handler);
inputSecond.on('keyup', handler);
答案 3 :(得分:0)
var inputFirst = $('#first'),
inputSecond = $('#second');
function getResult() {
var result = (parseInt(inputFirst.val()) || 0) + (parseInt(inputSecond.val()) || 0);
$('#result').text(result);
};
inputFirst.on('keyup', function() {
getResult();
});
inputSecond.on('keyup', function() {
getResult();
});
答案 4 :(得分:0)
你要阅读&想想Javascript代码的运行时。在您的示例中,当输入字段为空时,变量将被读出。所以,为此,他们将永远是空的。您必须在将它们添加到一起的函数中读出它们。
另外我建议看一下jQuery选择器。在以下代码中,为两个对象进行绑定。
$(document).ready(function() {
$('#first, #second').bind('keyup', function() {
$('#result').val($('#first').val() + $('#second').val());
});
});