Foros del Web » Programando para Internet » Javascript »

Validador de montos

Estas en el tema de Validador de montos en el foro de Javascript en Foros del Web. Buenas, antes que nada, queiro agradecer a Tunait por su javascript validador. Intente agregarle unas cosas mas que necesitaba en mi web, pero me ocurre ...
  #1 (permalink)  
Antiguo 18/09/2006, 07:48
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta Validador de montos

Buenas, antes que nada, queiro agradecer a Tunait por su javascript validador. Intente agregarle unas cosas mas que necesitaba en mi web, pero me ocurre que funciona correctamente pero en el caso de haber ingresado mal los montos luego siempre me dice que esta mal. Es como que no se vacia la variable.
Muchas gracias, aca va el codigo:

Código:
<script language="JavaScript">
//Script verificador de formularios por Tunait!
//Los campos obligados deben terminar con un *
//No verifica los checkbox ni los radio

function verificarFormu(cualo)
{
for(m=0;m<cualo.length;m++)
	{
	if(cualo.elements[m].id.charAt(cualo.elements[m].id.length-1) == "*")
	{
		if(cualo.elements[m].value=="")
			{
			alert("Debe poner un " + cualo.elements[m].id.substring(0,cualo.elements[m].id.length-1))
			cualo.elements[m].focus()
			return false
			break;
			}
	
		if(cualo.elements[m].id=="E-Mail" || cualo.elements[m].id=="E-Mail*")
			{
			pat=/^[\w\_\.çñ]{2,255}@[\w]{2,255}\.[a-z]{1,3}\.?[a-z]{0,3}$/
			if(!pat.test(cualo.elements[m].value))
				{
				alert("Introduzca un E-mail válido")
				cualo.elements[m].focus()
				return false
				}
		
			}
			if (cualo.elements[m].id=="Monto Min.*")
            {
             if(cualo.elements[m+1].value < cualo.elements[m].value)
               {
                 alert("El monto MAXIMO debe ser mayor al monto MINIMO")
                 cualo.elements[m].focus()
                
                return false
                break;
			   }
            }
		}
	else
	{
	continue;
	}
	}
	

}
</script>
  #2 (permalink)  
Antiguo 18/09/2006, 07:55
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola Spychaser

déjame ver el código del form, si es muy largo ponme sólo la parte de los campos de los montos a comparar
  #3 (permalink)  
Antiguo 18/09/2006, 08:06
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
De acuerdo

Aca esta una parte de mi form.
Utilizo
Código:
onKeyPress="return validar(event)"
para que solo ingresen numeros.
VALIDADOR NUMEROS:
Código:
<script type="text/javascript">
function validar(e) { // 1
    tecla = (document.all) ? e.keyCode : e.which; // 2
    if (tecla==8) return true; // 3
    patron =/\d/; // 4
    te = String.fromCharCode(tecla); // 5
    return patron.test(te); // 6
} 
</script>
FORM:
Código:
<td align="right"><span class="style2">Monto Max. :</span></td>
<td>
<input type="text" name="montomax" id="Monto Max.*" onKeyPress="return validar(event)" onFocus="foco(this);" onBlur="no_foco(this);" style="border:1px solid #CCCCCC"/>
</td>
</tr>
<tr>
<td align="right"><span class="style2">Monto Min. :</span></td>
<td>
<input type="text" name="montomin" id="Monto Min.*" onKeyPress="return validar(event)" onFocus="foco(this);" onBlur="no_foco(this);" style="border:1px solid #CCCCCC"/></td>
  #4 (permalink)  
Antiguo 18/09/2006, 08:36
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Por lo que veo tienes definido primero el monto máximo y después el mínimo. Así la posición del campo contra la que comparas es otro campo distintos

osea, tienes

montomaximo
montomimino
otrocampo
si tomas montominimo y lo comparas con su siguiente campo [m+1] lo estás comparando con otrocampo y no con montomaximo.
  #5 (permalink)  
Antiguo 18/09/2006, 08:43
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta joya

si es que no sabia como hacerlo de otra manera, entonces al tener los 2 campos de monto juntos me los valida.
El tema es que si ingresan mal los montos, luego cuando los pongan bien, le va a salir que esta mal.
Como puedo solucionarlo.
Muchas gracias, por la mano Tunait.
  #6 (permalink)  
Antiguo 18/09/2006, 08:47
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
No, si los ponen bien no va a pasar eso.

¿ya has cambiado ese + por -??

cualo.elements[m-1].value
  #7 (permalink)  
Antiguo 18/09/2006, 14:11
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta no funciona

Buenas, cambie
Código:
if(cualo.elements[m-1].value < cualo.elements[m].value)
peor no me funciona, sigue el mismo error:
Al ingresar mal un monto y luego corregirlo te sigue indicando que esta mal el monto:
Muchas Gracias
  #8 (permalink)  
Antiguo 18/09/2006, 14:31
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Déjame una dirección donde poder verlo en marcha
  #9 (permalink)  
Antiguo 18/09/2006, 14:50
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta web

Tunait:
aca te paso la direccion donde esta funcionando.
Muchas gracias

Última edición por Spychaser; 25/09/2006 a las 17:17
  #10 (permalink)  
Antiguo 18/09/2006, 15:14
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
pues puse en montomax 5 y en montomin 6 y me salió una alerta de que el max debía ser mayor. Luego cambién el montomax a 7 y el form se envió sin problemas (recibirás un email absurdo, por cierto)

No sé, a mi me ha funcionado correcto
  #11 (permalink)  
Antiguo 18/09/2006, 17:00
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta ...sigo

Tunait, muchas gracias por hacer esas pruebas, pero ocurre algo muy raro, prueba con 1000 y 1100, con esos valores no anda, nose porque.
Muchas gracias
  #12 (permalink)  
Antiguo 18/09/2006, 20:51
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta por lo que probe

Estuve probando y valida del 1-10 si insertas un numero mayor ocurre ese error.
Alguana idea.
Muchas gracias.
  #13 (permalink)  
Antiguo 20/09/2006, 06:50
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
?

Alguna solucion?
  #14 (permalink)  
Antiguo 20/09/2006, 07:31
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Se me había olvidado

er, mira, a veces lo hace bien a veces mal.

Prueba una cosa ... cambia esto ...

Código:
if (cualo.elements[m].id=="Monto Min.*")
            {
             if(cualo.elements[m-1].value < cualo.elements[m].value)
por esto

Código:
if (cualo.elements[m].id=="Monto Min.*")
            { 
			montoMax = parseFloat(cualo.elements[m-1].value)
			montoMin = parseFloat(cualo.elements[m].value)
             if(montoMax <= montoMin)
Si no van a haber decimales en los montos puedes usar parseInt en vez de parseFloat (yo por las dudas puse el float)

me cuentas que tal

saludos
  #15 (permalink)  
Antiguo 20/09/2006, 11:17
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
joya!

Muchas gracias Tunait, anda de 10!
Gracias
  #16 (permalink)  
Antiguo 20/09/2006, 12:30
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Estupendo me alegra que lo solucionaras.

Un saludo
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 17:06.