saludos...
aqui estan unas rutinas que me fueron facilitadas en este foro y que le hice algunas modicicaciones para usarlas segun era mi caso en ella podras escribir numeros son separadores de miles y decimales y sumarlos....
saludos....
espero te sirvan de ayuda
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Rutina para sumar Numeros</title>
<script languaje = "Javascript">
<!--
document.write("<b>Browser: </b> " + navigator.appName);
document.write ("<br><b>Versión: </b>" + navigator.appVersion);
document.write ("<br><b>Lenguaje: </b>" + navigator.language);
//-->
function formato_PC(n, sepMil, sepDec) {
if(sepMil == "."){
return Number( n.replace(/./g,"").replace(/,/g,sepMil) );
var numero = Number.value}
else{
return Number( n.replace(/./g,sepDec).replace(/,/g,"") );
var numero = Number.value}
}
function formato_HUM(n, sepMil, sepDec, Decimales) {
n=n.toFixed(Decimales);//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 r=0;r<arr.length;r++)
total+=formato_PC(arr[r],document.formulario.Sep_1.value,document.formulario.Sep_2.value); //cambiar aqui el orden de los separadores
return formato_HUM(total,document.formulario.Sep_1.value,document.formulario.Sep_2.value,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;//en "caja"+a va el nombre del los campos a sumar
}
document.getElementById("resultado").value=suma(arr); // "Resultado" es el campo a colocar el resultado de la suma
}
/*--------funcion que genera los separadores de miles y decimales mientras se escribe----------*/
function currencyFormat(fld, sepmil, sepdec, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode; // damos a whichCode el valor keycode de la tecla que ha sido pulsada
if (whichCode == 13 || whichCode == 0) return true; // validamos la tecla enter
key = String.fromCharCode(whichCode); // obtiene la tecla que ha sido pulsada de acuerdo a su keycode
if (strCheck.indexOf(key) == -1) return false; // invalidamos las teclas que no seas numericas
len = fld.value.length; // damos a len el largo de la parametro que hemos recibido
for(i = 0; i < len; i++)
if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != sepdec)) break; // si se cumplen las condiciones 'fld.value.charAt(i)' es cero y el valor de sepdec
aux = '';
for(; i < len; i++) // bucle para darle el primer formato al numero 0,00... 0,02... 0,23... 2,31...
if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0) fld.value = '';
if (len == 1) fld.value = '0'+ sepdec + '0' + aux;
if (len == 2) fld.value = '0'+ sepdec + aux;
if (len > 2) {
aux2 = '';
for (j = 0, i = len - 3; i >= 0; i--) { // bucle para darle formato de miles cada tres digitos al numero, 3.222... 32.223... 322.234...
if (j == 3) {
aux2 += sepmil;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
fld.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--) //bucle para darle formato de miles y decimales, 32.223,34
fld.value += aux2.charAt(i);
fld.value += sepdec + aux.substr(len - 2, len);
}
return false;
}
function cuenta(){
document.formulario.Valor.value = document.formulario.Sep_1.value;
}
</script>
</head>
<body>
<form name="formulario">
Sep Miles:<input type ="text" id="Sep_1" size="5" value="," disabled="disabled" />
<br />
Sep Decimales:<input type ="text" id="Sep_2" size="5" value="." disabled="disabled"/>
<br />
Numero<input type="text" id="caja1" size="30" onKeyPress="return(currencyFormat(this,document.formulario.Sep_1.value,document.formulario.Sep_2.value,event))"><br />
Numero<input type="text" id="caja2" size="30" onKeyPress="return(currencyFormat(this,document.formulario.Sep_1.value,document.formulario.Sep_2.value,event))"><br />
Numero<input type="text" id="caja3" size="30" onKeyPress="return(currencyFormat(this,document.formulario.Sep_1.value,document.formulario.Sep_2.value,event))"><br />
Numero<input type="text" id="caja4" size="30" onKeyPress="return(currencyFormat(this,document.formulario.Sep_1.value,document.formulario.Sep_2.value,event))"><br />
<input type="button" value="Resultado: " onclick="sumaTodos()" /> <input type="text" id="resultado" size="30">
</form>
</body>
</html>