it-swarm.com.de

Wie formatiert man in jQuery eine Zahl am besten auf zwei Dezimalstellen?

Das habe ich gerade:

$("#number").val(parseFloat($("#number").val()).toFixed(2));

Es sieht für mich unordentlich aus. Ich glaube nicht, dass ich die Funktionen richtig verkette. Muss ich es für jedes Textfeld aufrufen oder kann ich eine separate Funktion erstellen?

63
Iain Holder

Wenn Sie dies in mehreren Feldern tun oder es ziemlich oft tun, ist vielleicht ein Plugin die Antwort.
Hier sind die Anfänge eines jQuery-Plugins, das den Wert eines Felds auf zwei Dezimalstellen formatiert.
Wird durch das Ereignis onchange des Feldes ausgelöst. Vielleicht möchten Sie etwas anderes.

<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">
99
meouw

Vielleicht so etwas, wo Sie mehr als ein Element auswählen könnten, wenn Sie möchten?

$("#number").each(function(){
  $(this).val(parseFloat($(this).val()).toFixed(2));
});
62
svinto

Wir modifizieren eine Meouw-Funktion für die Verwendung mit keyup, da sie bei der Verwendung einer Eingabe hilfreicher sein kann.

Überprüfen Sie dies:

Hey there !, @heridev und ich haben eine kleine Funktion in jQuery erstellt.

Sie können als nächstes versuchen:

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:

http://jsfiddle.net/c4Wqn/

(@heridev, @vicmaster)

4
vicmaster