Foros del Web » Programando para Internet » Javascript »

Validar Ingreso de campo numerico sin punto decimal

Estas en el tema de Validar Ingreso de campo numerico sin punto decimal en el foro de Javascript en Foros del Web. Buenas a todos, estoy elaborando un pequeño algoritmo para calcular el area de un poligono de n lados, cuando hablo de n, el poligono puede ...
  #1 (permalink)  
Antiguo 06/10/2010, 12:48
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Validar Ingreso de campo numerico sin punto decimal

Buenas a todos, estoy elaborando un pequeño algoritmo para calcular el area de un poligono de n lados, cuando hablo de n, el poligono puede tener de 1 a 1000000 de lados, entonces lo que quiero validar que el usuario cuando me ingrese el numero de lados, solo ingrese valores enteros sin comas decimales..

Es decir que solo ingrese: 1, 2, 250, pero no 1.5, 2.6
Por ahora tengo validado que no ingrese ni valores negativos, ni caracteres, ni superiores a 1000000

Aca el codigo de mi algoritmo:

Código HTML:
Ver original
  1.  
  2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  3. <title>Poligonos</title>
  4.  
  5. </head>
  6.  
  7. <h1><b>CALCULO DE AREA Y PERIMETRO DE UN POLIGONO </b></h1>
  8.  
  9.  
  10. <form name="datos">
  11.  
  12.  
  13.     <h3>NUMERO DE LADOS </h3>
  14.  
  15.   <input  type="text" name="lado" size="10" maxlength="7" />
  16.   <h3>VALOR DEL LADO </h3>
  17.  
  18.   <input  type="text" name="valor" size="10" />
  19.  <h3>VALOR APOTEMA </h3>
  20.  
  21.   <input  type="text" name="apotema" size="10"  /><br>
  22.    
  23.    
  24.    <h3>VALOR PERIMETRO </h3>
  25. <input type="text" name="perimetro">
  26.  
  27.   <h3>VALOR AREA </h3>
  28. <input type="text" name="resultado"><br>
  29.    <br>
  30.      
  31.  
  32.     <br>
  33.    
  34.   <input type="button" value="Calcular valores" onClick="area()"> <input name="Limpiar"  type="reset" id="Limpiar" value="Borrar valores ingresados ">
  35.  
  36. </form>
  37.  
  38. <br />
  39. </body>
  40.  
  41. </html>

Y aca el codigo JavaScript donde valido (ubicando en el head):


Código Javascript:
Ver original
  1. <script languaje="JavaScript">
  2.  function area()
  3.  {
  4.  lado=document.datos.lado.value;
  5. valor=document.datos.valor.value;
  6. apotema=document.datos.apotema.value;
  7. lado = parseFloat(datos.lado.value, 10)
  8. valor = parseFloat(datos.valor.value, 10) ;
  9. apotema = parseFloat(datos.apotema.value, 10) ;
  10.             if ((document.datos.lado.value.length== "") ||         (document.datos.valor.value.length== "") || (document.datos.apotema.value.length== ""))
  11.                
  12.                {
  13.         alert("EXISTEN VALORES NO INGRESADOS");
  14.         return false;
  15.        
  16.                }
  17.              if ((document.datos.lado.value <= 0) || (document.datos.valor.value <= 0) || (document.datos.apotema.value <= 0))
  18.                
  19.                {
  20.         alert("SOLO PUEDE INGRESAR VALORES POSITIVOS");
  21.         return false;
  22.        
  23.           }
  24.          
  25.            if ((document.datos.lado.value <= 0) ||  (document.datos.lado.value > 1000000))
  26.                
  27.                {
  28.         alert("EL NUMERO DE LADOS DEL POLIGONO ES ENTRE 1 - 1 0 0 0 0 0 0");
  29.         return false;
  30.        
  31.           }
  32.           if ( isNaN(lado) ||   isNaN(valor) || isNaN(apotema))
  33.            {  
  34.         alert("TODOS LOS CAMPOS DEBEN SER VALORES NUMERICOS");
  35.                
  36.         return false  ;
  37.  
  38.         }
  39.          
  40.          
  41.              
  42.             perimetro=lado*valor;
  43.            
  44.            
  45.             document.datos.perimetro.value=perimetro;
  46.              document.datos.resultado.value=perimetro*apotema/2;
  47.           }
  48.            
  49.      
  50.       </script>

El algoritmo funciona y hace los calculos correctamente pero.......Como puedo hacer esa validación para que el usuario no me ingrese puntos decimales??

Agradezco me puedan colaborar
  #2 (permalink)  
Antiguo 06/10/2010, 13:06
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Validar Ingreso de campo numerico sin punto decimal

Saludos


Una idea podria ser!..utiliza onkeypress dentro del input a validar, busca el keyCode del punto y creas una funcion de js para ello.
__________________
:.:Nano.:: @nano_hard - Retornando al foro

Última edición por Nano_; 06/10/2010 a las 13:21
  #3 (permalink)  
Antiguo 06/10/2010, 13:28
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Validar Ingreso de campo numerico sin punto decimal

Prueba:
Código Javascript:
Ver original
  1. function num(c){
  2.  c.value=/^\d+$/.test(c.value)?c.value:c.value.substr(0,c.value.length-1);
  3. }
Código HTML:
Ver original
  1. <input type="text" onkeyup="num(this);" onblur='num(this);' />
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #4 (permalink)  
Antiguo 06/10/2010, 13:52
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: Validar Ingreso de campo numerico sin punto decimal

excelente, funciona perfectamente gracias
  #5 (permalink)  
Antiguo 06/10/2010, 14:13
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: Validar Ingreso de campo numerico sin punto decimal

Ahora me surge una duda, he probado el codigo, y me borra tambien terminos de tipo caracter

Como puedo dejarlo para que solo me haga lo mismo pero con letras?..

Que acepte puntos, pero no letras ni operadores aritmeticos?

Seria asi ??

Código Javascript:
Ver original
  1. function num(c){
  2.  c.value=/^\d+$/test(c.value)?c.value:c.value.substr(0,c.value.length-1);
  3. }
  #6 (permalink)  
Antiguo 06/10/2010, 14:17
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Validar Ingreso de campo numerico sin punto decimal

Prueba así:
Código Javascript:
Ver original
  1. function num(c){
  2.  c.value=/^(\d+|\d+\.|\d+\.\d+)$/.test(c.value)?c.value:c.value.substr(0,c.value.length-1);
  3. }
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #7 (permalink)  
Antiguo 06/10/2010, 15:05
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: Validar Ingreso de campo numerico sin punto decimal

Sirve, pero si la una tecla se deja oprimida por unos segundos, si recibe las letras, aunque eso seria ya como si el usuario a las malas quisiera ingresar la letra....jejeje
  #8 (permalink)  
Antiguo 07/10/2010, 07:15
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Validar Ingreso de campo numerico sin punto decimal

Ya, estuve buscando una solución para eso pero no se me ocurrió nada Si consigo algo lo posteo, y si alguien sabe de algún código que lo postee también.
Saludos (:
Edit: Prueba con este, es un poco menos 'vistoso' (cuando lo pruebes lo entenderás), pero funciona:
Código Javascript:
Ver original
  1. function num(c){
  2.  c.value=c.value.replace(/[A-z-\/\*\+]/, '');
  3. }
Código HTML:
Ver original
  1. <input type="text" onblur="num(this);" onkeypress="num(this);" onkeyup="num(this);" />
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Última edición por _cronos2; 07/10/2010 a las 07:27

Etiquetas: validar
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 11:05.