2012-11-16 60 views
0

原諒我,但我剛剛開始學習Javascript。我試圖得到兩個輸入字段的總和,並且我想在每個關鍵事件上更新結果「現場」。比較兩個輸入字段 - 我做錯了什麼?

此時結果字段在值輸入到輸入字段時會消失。

我在做什麼錯?

太感謝你了,

彼得

編輯:我是多麼愚蠢,我忘了張貼代碼

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

如果您發佈您的代碼,我們可以幫助您識別問題。 –

+0

部分代碼請 –

+0

其實,很難說沒有任何示例代碼。 –

回答

1
inputFirstVal = inputFirst.val(), 
inputSecondVal = inputSecond.val(); 

這些變量只初始化一次。您需要在想要讀取當前值的時刻致電val()

http://jsfiddle.net/u7VwP/7/

更新:新增parseInt所以你可以添加數字而不是字符串。

注意:此語法:

first = parseInt(first) || 0; 

如果parseInt結果是falsy(如NaN「不是一個數字」的時候,我們無法分析號碼或文字0),該值默認爲正確的||運營商的手端,0

+0

啊我現在看到了。非常感謝! – Peter

0

由於從我的評論,該功能的getResult將結束爲:

function getResult() { 
inputFirstVal = inputFirst.val(), 
inputSecondVal = inputSecond.val(); 
var result = inputFirstVal + inputSecondVal ; 
$('p#result').text(result); 
}; 

爲基於C焊割你只需調用該函數:

inputFirst.on('keyup', getResult); 
inputSecond.on('keyup', getResult); 
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);​ 
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(); 
});​ 
0

您已經閱讀&想一想JavaScript代碼的運行。在你的例子中,當輸入字段爲空時,變量被讀出。所以,他們永遠是空的。你必須在將它們加在一起的函數中讀出它們。

此外,我建議看看jQuery選擇器。在下面的代碼中,爲兩個對象進行綁定。

​​