Pregunta

Esto es lo que tengo ahora:

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

Me parece desordenado. No creo que esté encadenando las funciones correctamente. ¿Tengo que llamarlo para cada cuadro de texto o puedo crear una función separada?

¿Fue útil?

Solución

Si está haciendo esto en varios campos, o lo está haciendo con bastante frecuencia, entonces quizás un complemento sea la respuesta.
Aquí están los comienzos de un complemento jQuery que formatea el valor de un campo con dos decimales.
Se desencadena por el evento onchange del campo. Es posible que desee algo diferente.

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

Otros consejos

¿Quizás algo como esto, donde podría seleccionar más de un elemento si lo desea?

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

Modificamos una función Meouw para usarla con keyup, porque cuando está usando una entrada puede ser más útil.

Comprueba esto:

¡Hola !, @heridev y yo creamos una pequeña función en jQuery.

Puedes probar a continuación:

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
    });
});

& # 8203; DEMO EN LÍNEA:

http://jsfiddle.net/c4Wqn/

(@heridev, @vicmaster)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top