Number Format (jQuery/Javascript)
By | Wednesday, January 11, 2012


Hide Comments





jQuery:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function number_format(n, l, d){ //NUMBER, ITS NUMBERS OF DIGITS, AND DECIMAL POINT
var point = $("#point").val(); //EITHER "." OR A ","
var every = 3; //INSERTS THE POINT EVERY 3 DIGITS FROM THE ONE'S PLACE
var p = /^[0-9]+$/; //NUMBER PATTERN FOR VALIDITY
var s = ''; //BLANK UNTIL THE "FOR LOOP"

//SETS THE "EVERY 3 DIGITS POINT" DEPENDING ON DECIMAL POINT
if(point=="."){
t = ","; //INSERTS A "," AFTER 3 DIGITS IF DECIMAL POINT IS "."
} else {
t = "."; //INSERTS A "." AFTER 3 DIGITS IF DECIMAL POINT IS ","
}

//CHECKS WHETHER THE INPUT STRING IS A NUMBER
if(n.match(p)){
for(i=0; i<l; i++){
var e = (l-i)-1; //REVERSE THE "i" VARIABLE TO START FROM THE ONE'S PLACE
if(e%every==0){
s += n[i]+t; //IF THE "DIGIT POSITION" IS DIVISBLE BY 3, INSERTS THE "EVERY 3 DIGITS POINT"
} else {
s += n[i]; //ELSE, JUST DISPLAYS THE DIGIT
}
}
if(s[s.length-1]==t){
f = s.substr(0, s.length-1); //REMOVES THE POINT FROM THE END Ex: (1,000,000,)
}
if(d&&d.match(p)){
f += point+d; //IF DECIMAL IS PRESENT
}
} else {
f = 'Digits 0-9 only';
}
$("#number").html(f); //DISPLAYS FORMATTED NUMBER IN HTML
}
</script>
</head>
<body>
<input id="n" onKeyUp="number_format(this.value, this.value.length, $('#decimal').val())">
<select id="point" onChange="number_format($('#n').val(), $('#n').val().length, $('#decimal').val())">
<option value=".">.</option>
<option value=",">,</option>
</select>
<input id="decimal" onKeyUp="number_format($('#n').val(), $('#n').val().length, this.value)">
<span id="number">
</body>
</html>