比较两个输入字段 - 我做错了什么?

时间:2012-11-16 12:52:40

标签: javascript jquery

原谅我,但我刚开始学习Javascript。我正在尝试获取两个输入字段的总和,并且我想在每个keyup事件上更新结果“live”。

当输入值输入值时,结果字段刚刚消失。

我做错了什么?

非常感谢你,

彼得

编辑:我多么愚蠢,我忘记发布代码

http://jsfiddle.net/u7VwP/

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);
});​

5 个答案:

答案 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());
    });
});