Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] comprobar si son numeros

Estas en el tema de comprobar si son numeros en el foro de Javascript en Foros del Web. Hola buenas, estoy empezando con javascript y tengo una duda que no logro resolver, se trata de un ejercicio basico y es: -como calcular el ...
  #1 (permalink)  
Antiguo 10/03/2014, 02:49
 
Fecha de Ingreso: marzo-2014
Ubicación: Barcelona
Mensajes: 4
Antigüedad: 10 años, 9 meses
Puntos: 0
comprobar si son numeros

Hola buenas, estoy empezando con javascript y tengo una duda que no logro resolver, se trata de un ejercicio basico y es:

-como calcular el producto de dos numeros.

A través de un prompt pido los numeros y hago la operación pero el tema es que nosé como comprobar que realmente el usuario está introduciendo números y no letras, he leído algo del isNaN pero nosé si es la solución.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3.         var num1= prompt ("Introduce el primer numero");
  4.         var num2 = prompt ("Introduce el segundo numero");
  5.  
  6.         var total = num1*num2
  7.  
  8.         alert("El resultado es " + total);
  9.    
  10. </script>
Gracias, y un saludo

Última edición por littlepol; 10/03/2014 a las 04:54
  #2 (permalink)  
Antiguo 10/03/2014, 07:44
Avatar de herran1212  
Fecha de Ingreso: julio-2013
Ubicación: cali
Mensajes: 89
Antigüedad: 11 años, 5 meses
Puntos: 3
Respuesta: comprobar si son numeros

con isNaN() funciona bien, la funcion retorna true cuando no es un numero, y false cuando es un numero, puedes validarlo asi

<script type="text/javascript">

var num1= prompt ("Introduce el primer numero");

var num2 = prompt ("Introduce el segundo numero");

if(isNaN(num1)){
alert("Error.\nEl primer valor ingresado debe ser numero");
}
if(isNaN(num1)){
alert("Error.\nEl primer valor ingresado debe ser numero");
}

if(!isNaN(num1) && !isNaN(num2)){
var total = num1*num2

alert("El resultado es " + total);
}


</script>

es un ejemplo de muestra, es secillo, y rapido, aca la pagina de documentacion oficial
http://www.w3schools.com/jsref/jsref_isnan.asp

espero te sirva
  #3 (permalink)  
Antiguo 10/03/2014, 08:28
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: comprobar si son numeros

Cita:
Iniciado por herran1212 Ver Mensaje
[...] con isNaN() funciona bien, la funcion retorna true cuando no es un numero, y false cuando es un numero [...]
¡No!

No es correcto validar un número mediante isNaN por varias razones, la principal es que hay conversión de tipos y por ejemplo, un string vacío "" se transformaría en un 0 automáticamente, luego la función devolvería falso, osea que supuestamente sí es un numero.

La forma recomendada es mediante el operador typeof:

Código Javascript:
Ver original
  1. if(typeof num == 'number')

Una vez más la "documentación" de W3Schools falla.

Saludos
  #4 (permalink)  
Antiguo 10/03/2014, 08:33
Avatar de herran1212  
Fecha de Ingreso: julio-2013
Ubicación: cali
Mensajes: 89
Antigüedad: 11 años, 5 meses
Puntos: 3
Respuesta: comprobar si son numeros

Cita:
Iniciado por PHPeros Ver Mensaje
¡No!

No es correcto validar un número mediante isNaN por varias razones, la principal es que hay conversión de tipos y por ejemplo, un string vacío "" se transformaría en un 0 automáticamente, luego la función devolvería falso, osea que supuestamente sí es un numero.

La forma recomendada es mediante el operador typeof:

Código Javascript:
Ver original
  1. if(typeof num == 'number')

Una vez más la "documentación" de W3Schools falla.

Saludos
siempre es bueno aprender yo lo ponia por ejemplo basico, igual si tiene un input type tex podria usar una expresion regular y validar solo numero, gracias por corregirme, no lo sabia
  #5 (permalink)  
Antiguo 10/03/2014, 08:39
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: comprobar si son numeros

Además lo que se obtiene de un prompt es siempre texto, hay que pasarlo a número:

Código Javascript:
Ver original
  1. var num1 = Number(prompt("Introduce el primer numero"));

o mediante el operador +:

Código Javascript:
Ver original
  1. var num1 = +prompt("Introduce el primer numero");

Y también se debería utilizar isNaN() en conjunto al código anterior ya que NaN es un número.

Saludos
  #6 (permalink)  
Antiguo 11/03/2014, 04:01
 
Fecha de Ingreso: marzo-2014
Ubicación: Barcelona
Mensajes: 4
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: comprobar si son numeros

Gracias por vuestra ayuda, he conseguido lo que queria, comprobar que lo que se introduce son numeros, os muestro el codigo a ver que os parece.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3.         var total;
  4.         var num1 = Number (prompt ("Introduce el primer numero"));
  5.        
  6.             if (isNaN(num1)){
  7.                 do {
  8.                 var num1 = Number (prompt ("No es un numero, vuelve a introducir el primer numero"));
  9.             } while (isNaN(num1));
  10.             }
  11.  
  12.         var num2 = Number (prompt ("Introduce el segundo numero"));
  13.  
  14.             if (isNaN(num2)){
  15.                 do {
  16.                 var num2 = Number (prompt ("No es un numero, vuelve a introducir el segundo numero"));
  17.             } while (isNaN(num2));
  18.             }
  19.        
  20.         total=num1*num2;
  21.  
  22.         alert("El resultado es " + total);
  23.  
  24.                
  25. </script>

Un saludo!!

Etiquetas: numeros, son
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:56.