In jQuery, what's the best way of formatting a number to 2 decimal places?
If you're doing this to several fields, or doing it quite often, then perhaps a plugin is the answer.
Here's the beginnings of a jQuery plugin that formats the value of a field to two decimal places.
It is triggered by the onchange event of the field. You may want something different.
<script type="text/javascript"> // mini jQuery plugin that formats to two decimal places (function($) { $.fn.currencyFormat = function() { this.each( function( i ) { $(this).change( function( e ){ if( isNaN( parseFloat( this.value ) ) ) return; this.value = parseFloat(this.value).toFixed(2); }); }); return this; //for chaining } })( jQuery ); // apply the currencyFormat behaviour to elements with 'currency' as their class $( function() { $('.currency').currencyFormat(); });</script> <input type="text" name="one" class="currency"><br><input type="text" name="two" class="currency">
Maybe something like this, where you could select more than one element if you'd like?
$("#number").each(function(){ $(this).val(parseFloat($(this).val()).toFixed(2));});
We modify a Meouw function to be used with keyup, because when you are using an input it can be more helpful.
Check this:
Hey there!, @heridev and I created a small function in jQuery.
You can try next:
HTML
<input type="text" name="one" class="two-digits"><br><input type="text" name="two" class="two-digits">
jQuery
// apply the two-digits behaviour to elements with 'two-digits' as their class$( function() { $('.two-digits').keyup(function(){ if($(this).val().indexOf('.')!=-1){ if($(this).val().split(".")[1].length > 2){ if( isNaN( parseFloat( this.value ) ) ) return; this.value = parseFloat(this.value).toFixed(2); } } return this; //for chaining });});
DEMO ONLINE:
(@heridev, @vicmaster)