我正在尝试创建一个计算器,我希望在每次按键时添加/总和我这样做:
$('#padd').keypress(function() {
var ypoints = "200";
var points = parseInt( $(this).val() );
console.log( "Points: " + (points + parseInt(ypoints)) );
});
我的问题似乎是"点"总是落后一步。让我们说我的" ypoints"是200,我输入第1,console.log说" NaN"?如果我然后输入" 10" console.log说" 201"事实上它应该说" 210"?!?如果我然后添加" 100"在添加字段中它表示" 210"但它应该说" 300"。总是有一个按键背后?!?
我在这里缺少什么,或者这不是正确的方法吗?
任何帮助都表示赞赏,并提前感谢: - )
答案 0 :(得分:3)
Try using the keyup
function instead(尽管您可能根本不想听{4}}事件,请参阅下文):
key*
而不是$('#padd').keyup(function(){
var ypoints = 200;
var points = parseInt($(this).val());
console.log("Points: "+(points+ypoints));
});
,您应该listen for the explicit input
event:
keyup
使用$('#padd').on("input", function(){
var ypoints = 200;
var points = parseInt($(this).val());
console.log("Points: "+(points+ypoints));
});
收听input
事件胜过的示例是using an input
of type number
。在(not so) modern browser中,这会在输入字段中添加一个步进器,您可以使用鼠标将输入值递增或递减1。这不会触发keyup
事件(没有按下任何键)但仍然会更改值。
这实际上是某个事件何时被触发以及当时keyup
值的状态。有explanation on quirksmode.org:
<强> KEYUP 强>
当用户释放密钥时触发, 后执行该密钥的默认操作。
以及有关MDN上input
事件的更多信息:
当更改或元素的值时,会同步触发DOM输入事件。
答案 1 :(得分:1)
试试这个,它是一个有效的代码:Fiddle
$('#padd').keyup(function(){
var ypoints = "200";
var points = parseInt($(this).val());
alert("Points: "+(points+parseInt(ypoints)));
});
答案 2 :(得分: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));
});
答案 3 :(得分: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)));
});