2011-03-13 22 views
14

Tengo un formulario de pedido en el que utilizo el complemento de cálculo jQuery para resumir el total.Cálculo, reemplace el punto con una coma

Este resumen funciona bien, pero hay un problema con la 'suma' producida. En la suma, deseo reemplazar cualquier punto con una coma.

La base del código es;

function ($this) { 
    var sum = $this.sum(); 
    $("#totaal").html("€ " + sum2); 
} 

El uso de un .replace() directamente en la suma var no funciona (función de referencia no está disponible en el objeto). También he intentado esto (pero sin efecto);

var sum2 = sum.toString().replace(',', '.'); 

Como Soy una especie de nuevo en jQuery que estoy bastante atascado ahora, podría alguien me punto en la dirección correcta?

Respuesta

31

Su línea de reemplazo es casi correcta. Necesita usar una expresión regular con la opción g, que dice reemplazar todas las instancias en lugar de solo la primera. También tiene la orden intercambiada (primero es qué encontrar, segundo es con qué reemplazarla).

var sum2 = sum.toString().replace(/\./g, ','); 

Nota del \ antes de la .: . tiene un significado especial en una expresión regular, por lo que tiene que ser escapado.

+0

Buen punto, lo he agregado a mi respuesta también +1 – Jason

+0

Guau, gracias por la respuesta rápida. ¡La línea de arriba funciona perfectamente! – YDL

1

Si la suma es un número, entonces esto funcionaría.

var sum_formatted = String(sum).replace(/\./g,','); 

Puede ejecutar typeof (sum) y decirnos cuál es la salida.

Además, si puede configurar el proyecto en jsfiddle.com, sería genial.

+0

typeof (suma) devuelve "Número". Sin embargo, la línea de arriba no parece funcionar (no reemplaza el punto). – YDL

+0

No funciona porque el orden de los argumentos sigue siendo incorrecto. – nzifnab

+0

De hecho, asumí que YDL quería cambiar las comas por puntos. De todos modos lo he cambiado alrededor de – Jason

0

Su problema es que su función de reemplazo debería leer replace('.', ','), no al revés (tenía replace(',', '.')), tenga en cuenta que el primer argumento es lo que está buscando, y el segundo argumento es lo que quiere allí. Estabas reemplazando todas las comas con puntos. Regex aquí es innecesario.

Cuestiones relacionadas