Comunidad de diseño web y desarrollo en internet online

Sumar y restar con decimales

Citar            
MensajeEscrito el 04 Nov 2019 05:36 pm
Tengo el siguiente código que suma y resta en tiempo real los valores ingresados en los campos, adicionalmente los campos son solo números, y coloca automáticamente el separador de miles.. todo funciona bien solo que no me suma decimales.. (números separados por el punto de mil) acá pongo el Script el cual no se que hacer para que funcione sin problemas (Sume y Reste usando decimales)

Código Javascript :

<html>
<head>
</head>
<body>
<script>
//---- SCRIPT SUMA Y RESTA EN CAMPOS--------
function fncSumar(){
caja=document.forms["sumar"].elements;
var numero1 = Number(caja["numero1"].value);
var numero2 = Number(caja["numero2"].value);
var numero3 = Number(caja["numero3"].value);
resultado=numero1+numero2-numero3;
if(!isNaN(resultado)){
caja["resultado"].value=numero1+numero2-numero3;
}
}
//-----SCRIPT SEPARADOR DE MILES---------
function format(input)
{
var num = input.value.replace(/\./g,'');
if(!isNaN(num)){
num = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1.');
num = num.split('').reverse().join('').replace(/^[\.]/,'');
input.value = num;
}
//-- ALERTA SOLO NUMEROS 
else{ alert('Solo se permiten numeros');
input.value = input.value.replace(/[^\d\.]*/g,'');
}
}
</script>
<form method="post" name="sumar">

  <p>+Primer Numero:
    <input type="text" name="numero1" onKeyUp="fncSumar();format(this)" onchange="format(this)"/>
  </p>
  <p>+ Segundo Numero:
    <input type="text" name="numero2" onKeyUp="fncSumar();format(this)" onchange="format(this)"/>
  </p>
  <p>- Tercer Numero:
    <input type="text" name="numero3" onKeyUp="fncSumar();format(this)" onchange="format(this)"/>
  </p>
  <p>Resultado:
  <input name="resultado" type="text" readonly/>
  </p>
</form>
</body>
</html>

Por flashtrix

21 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 24 Nov 2019 04:22 am
Problema 1: Si utilizas puntos como separador, no sabe distinguir los decimales.

Problema 2: SI utilizas coma como separador, te va a dar un continuo "NaN" ya que al formatear destrozas el número, entonces cada vez que cambias el numero y agrega una coma, lo toma como un "not a number" y vuelve a romper todo.

La pregunta aqui seria ¿como sabes si es un decimal o un separador?

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.