Here is the code I wrote a long time ago to format a number with commas. Example: formatNumber(349507, 0, 2, true) → "349,507.00" .
// Reformats a number by inserting commas and padding out the number of digits // and decimal places. // // Parameters: // number: The number to format. All non-numeric characters are // stripped out first. // digits: The minimum number of digits to the left of the decimal // point. The extra places are padded with zeros. // decimalPlaces: The number of places after the decimal point, or zero to // omit the decimal point. // withCommas: True to insert commas every 3 places, false to omit them. function formatNumber(number, digits, decimalPlaces, withCommas) { number = number.toString(); var simpleNumber = ''; // Strips out the dollar sign and commas. for (var i = 0; i < number.length; ++i) { if ("0123456789.".indexOf(number.charAt(i)) >= 0) simpleNumber += number.charAt(i); } number = parseFloat(simpleNumber); if (isNaN(number)) number = 0; if (withCommas == null) withCommas = false; if (digits == 0) digits = 1; var integerPart = (decimalPlaces > 0 ? Math.floor(number) : Math.round(number)); var string = ""; for (var i = 0; i < digits || integerPart > 0; ++i) { // Insert a comma every three digits. if (withCommas && string.match(/^\d\d\d/)) string = "," + string; string = (integerPart % 10) + string; integerPart = Math.floor(integerPart / 10); } if (decimalPlaces > 0) { number -= Math.floor(number); number *= Math.pow(10, decimalPlaces); string += "." + formatNumber(number, decimalPlaces, 0); } return string; }
You can use it in the onblur event onblur as follows:
<input type="text" onblur="this.value = '$' + formatNumber(this.value, 0, 0, true)" />
This will add a comma to the number and click the dollar sign on the front panel.
John kugelman
source share