数字偶尔不会在JQuery中正确添加

时间:2011-09-26 16:26:57

标签: jquery

此代码位于jquery移动表单中。它将数字相加并在禁用的文本框中显示总数。当总数为100时,启用继续(提交)按钮。

当没有值时,会话var代码正确地输入零。

问题: 有时人们会在零之后键入一个数字(例如:0100) 看起来这样,加上删除数字会导致数字不能正确加起来。

我可以使用你的协助:
在计算总计时消除随机的bugginess,特别是在清除值时。我应该使用parseInt吗?

提前致谢。

 <script>
$(document).ready(function() {  
<?php 
if (!isset($_SESSION['num1'])) {   
    echo "$('#num1').val(0);";  
}
if (!isset($_SESSION['num2'])) {   
    echo "$('#num2').val(0);";  
}
if (!isset($_SESSION['num3'])) {   
    echo "$('#num3').val(0);";  
}
if (!isset($_SESSION['num4'])) {   
    echo "$('#num4').val(0);";  
}
?>  

 //to handle previously entered values if back button used: <br/>

var tot = ($('#num1').val() - 0) + 
    ($('#num2').val() - 0) + 
    ($('#num3').val() -0) + 
    ($('#num4').val() - 0);
    $('#total').val(tot);
    if (tot==100) {
       $('#continue').removeAttr('disabled');            
    } else {
       $('#continue').attr("disabled","disabled");             
    }

     //to handle numbers on update.  
    $('input[name^="int"]').keypress(function() {
        var tot = ($('#num1').val() - 0) + 
            ($('#num2').val() - 0) + 
            ($('#num3').val() -0) + 
            ($('#num4').val() - 0);
            $('#total').val(tot);
            if (tot==100) {
               $('#continue').removeAttr("disabled");
            } else {
               $('#continue').attr("disabled","disabled");
            }

       });

3 个答案:

答案 0 :(得分:1)

尝试使用parseInt($('#num').val(),10)代替$('#num').val() - 0将字符串转换为数字

答案 1 :(得分:0)

您应该使用parseInt代替。但是,请确保正确使用它:

parseInt("09",10); // equals 9
parseInt("09); // equals zero, because it thinks it's an octal number

答案 2 :(得分:-1)

仅使用一行代码从输入中获取int:

var n=parseInt($('#num').val(),10)||0;