Foros del Web » Programando para Internet » Javascript »

validar euros

Estas en el tema de validar euros en el foro de Javascript en Foros del Web. Wenas: Tengo un campo type text q sirve para introducir una cantidad en euros. Necesito validar que lo que se haya introducido sea con el ...
  #1 (permalink)  
Antiguo 10/10/2003, 02:31
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
validar euros

Wenas:

Tengo un campo type text q sirve para introducir una cantidad en euros.

Necesito validar que lo que se haya introducido sea con el formato
Código:
numeronumeronumero....numero,numeronumeronumero....numero
¿Alguién conoce un buen script que lo haga?.

He estado mirando todo el asunto de las expresiones regulares, pero mi nivel no es muy bueno, y no me entero del todo.

Salu2 y gracias por vuestra ayuda.

__________________
No es sabio el que sabe sino el que no sabe y quiere aprender
  #2 (permalink)  
Antiguo 10/10/2003, 02:36
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Puedes poner un ejemplo del galimatías
Código PHP:
numeronumeronumero....numero,numeronumeronumero....numero 
??

gracias!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 10/10/2003, 11:24
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, fjmasero y KarlanKas.

Jugando un poco a adivino, creo que lo que quieres podría ser algo así:
Código PHP:
function validar(valor) {
patron=/^([0-9])+,([0-9])+$/
valido=patron.test(valor);
alert(valido);

¿He acertado? En caso afirmativo, buena parte del mérito la tiene Tunait (¡Hola! ) por su explicación sobre expresiones regulares.

Saludos,
  #4 (permalink)  
Antiguo 13/10/2003, 02:44
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
Hola:

Gracias por contestar, y perdonar por no haber puesto claro el "modelo", pero creia q asi si lo estaba.

Ejemplo: 129,69

JavierB: ¿tu función permite q la parte decimal no esté, es decir, q la contidad introducida sea solo, por ejemplo, 129?.

Salu2.
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender
  #5 (permalink)  
Antiguo 13/10/2003, 09:29
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Dado el aburrimiento que tengo hoy, con el permiso de JavierB y sin que sirva de óbice para que conteste él (dado que las expresiones regulares es algo que, pese a los denodados esfuerzos de tunait (hola guapísima!), todavía se me resiste) te pongo este tonto ensayo de respuesta para ver si también te ayuda. La gracia que tiene es que admite que pongas tanto coma para separar decimales (forma hispana) como puntos (forma angloparlante).
`
Código:
<html>
<head>
<script>function validar(valor) {
valor=valor.split(",").join(".");
if(!isNaN(valor)&& parseInt(valor*100)==(valor*100)){alert("bien");}
else{alert("mal")}
}
</script>
	<title>Validador</title>
</head>

<body>
<input name="pepe" onblur="validar(this.value)">


</body>
</html>
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #6 (permalink)  
Antiguo 13/10/2003, 10:17
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

Aprobechando la invitación de KarlanKas y siguiendo con lo iniciado por tunait (Saludos a ambos ), prueba, amigo fjmasero, el siguiente patrón:

patron=/^([0-9])+(,([0-9])+)*$/

Saludos,
  #7 (permalink)  
Antiguo 16/10/2003, 11:11
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
a todos y gracias por vuestra ayuda.

He probado los códigos q me habéis puesto, y funcionan, unos mejor q otros.

Pero no hacen exactamente lo que quiero, es decir, q el usr solo pueda introducir euros, con el formato

parte entera , parte decimal con 2 digitos máximo.

Os pongo como lo he hecho:

Código:
function esEuros(campo)
{
 var valor = campo.value;
 //comprobacion si PVP tiene formato euros (se podria hacer en funcion aparte, pero en esta funcionalidad no es preciso)
 if (EsNumero(campo)) //si es numero, en cuyo caso solo parte entera (si hbuiera al menos una ',', seria false)
 {
  if (valor != "0") //si PVP no es 0, se hace submit
   return true;
  else //si PVP es 0, error
   return false;
 }
 else //si hay algun caracter no numero
 {
  precio = valor.split(","); //se construye un array con las subcadenas del campo PVP separadas por ','
  if (precio.length == 2) //si dicho array tiene 2 posiciones (parte entera y parte decimal), es que el PVP tiene parte_entera,parte_decimal
  {
   var regE=new RegExp("^[\\d]*$"); //expresion regular que comprueba si solo hay digitos
   if(regE.test(precio[0]) && regE.test(precio[1])) //comprobacion de parte entera y decimal del valor del PVP introducido (si son numeros unicamente)
   {
    if (precio[1].length <= 2) //si la parte decimal tiene solo 2 decimales, se hace submit
     return true;
    else //si parte decimal tiene + de dos decimales
     return false;
   }
   else //si las supuestas parte entera y/o la parte decimal tiene algun caracter no numerico
    return false;
   }
   else //si el array no tiene dos posiciones, es que algo "raro" hay en el PVP
    return false;
 }
}

[esNumero(n) devuelve si el n pasado es un numero]
Pelin enrevesado, pero me funciona como os he dicho, salvo q vosotros, q sabéis + q yo, me digáis los posibles problemas, q estoy seguro habrá.

__________________
No es sabio el que sabe sino el que no sabe y quiere aprender
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 15:47.