简体   繁体   中英

How to set auto 2 decimal number using value from id input type=“text” javascript?

How to set auto 2 decimal number using value from id input type="text" javascript ?

http://jsfiddle.net/A4wxX/90/

First , fill data eg: 2 into input , it's will update input to 2.00

But not work When i user this

var numb = document.getElementById("int").value;

How can i do ? thank.

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.js"></script>

<script type="text/javascript">

function fn_do() {
    var numb = document.getElementById("int").value;               
    //var numb = 123;
    var zzz = numb.toFixed(2);   
    document.getElementById("int").value = zzz;
}    
</script>

<input type="text" id="int" onchange="fn_do()">

Instead of

var zzz = numb.toFixed(2)

Try

var zzz = parseFloat(numb).toFixed(2) //use parseInt() or parsFloat() as shown here.

Your complete will look like this :-

function fn_do() {
    var numb = document.getElementById("int").value;               
    var zz = parseFloat(numb) || 0;  //it will convert numb to float if conversion fails it will return 0.
    var zzz = zz.toFixed(2);  
    document.getElementById("int").value = zzz;
}

Fiddle

You should use parseFloat , because DOM property value is a string, not number.

var zzz = parseFloat(numb).toFixed(2)

And don't use parseInt , because it'll give you an integer, for example parseInt("1.2") will be 1 , then toFixed(2) gives you 1.00 , while you actually want 1.20 I assume.

One more thing to care is, make sure input content is valid, for example parseFloat('qwer') will give you NaN . So the final code would look like:

var zzz = (parseFloat(numb) || 0).toFixed(2);

var decimalForm = parseFloat(Math.round( intNum * 100) / 100).toFixed(2); alert(decimalForm );

If I'm understanding this correctly, you want whatever number is put into the object with the id 'int' to be automatically converted to a decimal value with two placeholders. You could do something like this:

function convertToDecimal(value) {
    var tempValue = Nath.Round(parseFloat(value) * 100);
    var returnValue = tempValue * .01;
    return returnValue;

}

That would ensure that you always get two decimal places

Exceptions: 1. if tempValue is a multiple of 10, only one decimal will come out 2. if tempValue is a multiple of 100, no decimals will be returned

Solution:

function convertDecimals(convertedValue) {
              var tempValue = Nath.Round(parseFloat(value) * 100);
              if ((tempValue % 10) == 0) {  
                   if ((tempValue % 100) == 0) {   var returnValue = convertedValue + .00; return returnValue; } else {
                        var returnValue = convertedValue + 0; 
                         return returnValue;
                  }
              }
        return '';
  }

So maybe the whole cde would look like this

function fn_do() {
    var numb = document.getElementById("int").value;               
    //var numb = 123;
    var zzz = convertToDecimal(numb);
    zzz = zzz + convertDecimal(zzz);
    document.getElementById("int").value = zzz;
}    


 function convertToDecimal(value) {
        var tempValue = Nath.Round(parseFloat(value) * 100);
        var returnValue = tempValue * .01;
        return returnValue;

    }

   function convertDecimals(convertedValue) {
                  var tempValue = Nath.Round(parseFloat(value) * 100);
                  if ((tempValue % 10) == 0) {  
                       if ((tempValue % 100) == 0) {   var returnValue = convertedValue + .00; return returnValue; } else {
                            var returnValue = convertedValue + 0; 
                             return returnValue;
                      }
                  }
            return '';
      }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM