este es un script que me facilito DERKENUKE para sumar cantidades con separadores de miles y decimales. y a pesar de que soy un poco nuevo en el Javascript le he hecho unas modificaciones para que funcione genericamente, es decir, en ciertos paises los separadores de miles son las comas y los de decimales son los puntos y en otros paises es al contrario los puntos son separadores de miles y las comas son separadores de decimales asi que a lo mejor le puede servir a alguien porque me he pasado como dos meses y medio tratando de sumar numeros asi hasta que en este foro logre encontrar la forma
saludos a todos
Código PHP:
<script languaje = "Javascript">
function formato_PC(n, sepMil, sepDec) {
if(sepMil == "."){
return Number( n.replace(/./g,"").replace(/,/g,sepMil) );}
else{
return Number( n.replace(/./g,sepDec).replace(/,/g,"") );}
}
function formato_HUM(n, sepMil, sepDec, Decimales) { debugger;
n=n.toFixed(2);//el 2 equivale a la cantidad de decimales que se desee
n=String(n).split(".");
n[0]=n[0].split("").reverse().join("");
if(sepMil == "."){
n[0]=n[0].replace(/(d{3})(?=d)/g,"$1" + sepMil);
}else{
n[0]=n[0].replace(/(d{3})(?=d)/g,"$1" + sepDec);
}
n[0]=n[0].split("").reverse().join("");
if(sepMil == "."){
return n.join(",");}
else{
n[0]=n[0].replace(/./g,",");
return n.join(".");}
}
//cuando se realizen los cambios de separadores deben tener el mismo orden
function suma(arr) {
var total=0;
for(var i=0;i<arr.length;i++)
total+=formato_PC(arr[i],'.',','); //cambiar aqui el orden de los separadores
return formato_HUM(total,'.',',',2); //cambiar aqui el orden de los separadores
}
function sumaTodos() {
var arr=new Array();
for(var a=1; a<=4; a++) {
arr[arr.length]=document.getElementById("caja"+a).value;
}
document.getElementById("resultado").value=suma(arr);
}
</script>