开发者

Numbers occasionally not adding correctly in JQuery

开发者 https://www.devze.com 2023-04-07 23:20 出处:网络
This code is i开发者_如何转开发nside a jquery mobile form. It adds up the numbers and displays the total in a disabled text box. When the the total is 100, the continue (submit) button is enabled.

This code is i开发者_如何转开发nside a jquery mobile form. It adds up the numbers and displays the total in a disabled text box. When the the total is 100, the continue (submit) button is enabled.

The session var code properly puts in zeroes when there isn't a value.

Problem: Sometimes people will type a number after the zero (eg: 0100).

It seems like this, combined with erasing a number will cause the numbers not to add up properly.

I could use your assistance with:

Getting rid of the random bugginess in calculating the total, especially when the value is cleared. Should I be using parseInt instead?

Thanks in advance.

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

       });


try with parseInt($('#num').val(),10) instead of $('#num').val() - 0 to transform the strings to numbers


You should be using parseInt instead. However, make sure you use it properly:

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


To get an int out of an input using only one line of code:

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

精彩评论

暂无评论...
验证码 换一张
取 消