2015-02-07 34 views
0

我想創建每個按鍵中,我想添加一個計算器/總和按鍵總是一步我做出這樣的:jQuery的獲取和背後

$('#padd').keypress(function() { 

    var ypoints = "200";   
    var points = parseInt($(this).val()); 

    console.log("Points: " + (points + parseInt(ypoints))); 

}); 

我的問題是,它似乎像「點「總是落後一步。讓我說我的「ypoints」是200,我輸入第一個,console.log說「NaN」?如果我輸入「10」,console.log會顯示「201」,而實際上它應該顯示「210」?!?如果我在添加字段中添加「100」,它會顯示「210」,但應該顯示爲「300」。總是有一個按鍵在後面?!?

我在這裏錯過了什麼,或者這不是正確的方法嗎?

任何幫助表示讚賞和感謝提前:-)

+0

使用keyup事件,按鍵值之前triggred被分配 – Farhan 2015-02-07 09:53:55

回答

3

Try using the keyup function instead(雖然你可能不想聽的key*事件可言,見下文):

$('#padd').keyup(function(){ 
    var ypoints = 200;   
    var points = parseInt($(this).val()); 
    console.log("Points: "+(points+ypoints)); 
}); 

相反的keyup,你應該listen for the explicit input event

$('#padd').on("input", function(){ 
    var ypoints = 200;   
    var points = parseInt($(this).val()); 
    console.log("Points: "+(points+ypoints)); 
}); 

一個例子爲input事件王牌當聽使用keyup時是using an input of type number。在(not so) modern browser中,這會在輸入字段中添加一個步進器,您可以使用它通過鼠標將輸入值遞增或遞減1。這不會觸發keyup事件(不按任何鍵),但會更改該值。


這是真的,當某些事件被解僱的問題和input的價值在當時的狀態。有一個explanation on quirksmode.org:當用戶釋放的關鍵

KEYUP

火災,後已執行該鍵的默認操作。上MDNinput事件

和更多信息:

時的或元件的值改變的DOM輸入事件被同步地燒製。

+0

完美,這做了工作.... – Mansa 2015-02-07 10:01:18

1

試試這個,它的工作代碼:Fiddle

$('#padd').keyup(function(){ 
     var ypoints = "200";   
     var points = parseInt($(this).val()); 
     alert("Points: "+(points+parseInt(ypoints))); 
}); 
0
Problem in ParseInt function. 
    try this Code: 

    $('#padd').keypress(function(){ 

    var ypoints = "200";   
    var points = parseInt($(this).val()); 

    console.log("Points: "+parseInt(ypoints+points)); 

}); 
0

你也可以這樣的代碼......

function GetTextboxAmount(obj) { 

     var retVal = 0; 

     try { 
      if (obj.val() == "") { 
       retVal = 0; 
      } else if (obj.val() == '') { 
       retVal = 0; 
      } else if (isNaN(parseFloat(obj.val()))) { 
       retVal = 0; 
      } else { 
       retVal = Math.round(parseFloat(obj.val())); 
      } 

     } catch (e) { retVal = 0; } 
     obj.val(retVal); 
     return retVal; 
    } 

$('#padd').keyup(function(){ 

    var ypoints = "200";   
    var points = GetTextboxAmount($(this)); 

    console.log("Points: "+(points+parseInt(ypoints))); 

});