Foros del Web » Programando para Internet » Javascript »

validar formulario

Estas en el tema de validar formulario en el foro de Javascript en Foros del Web. Hola muy buenas... Tengo un pequeño formulario q me gustaría validar.El usuario puede llenar los campos con número separados por comas de este tipo: 12530,23543 ...
  #1 (permalink)  
Antiguo 29/07/2003, 09:25
 
Fecha de Ingreso: julio-2003
Mensajes: 164
Antigüedad: 20 años, 9 meses
Puntos: 0
validar formulario

Hola muy buenas...

Tengo un pequeño formulario q me gustaría validar.El usuario puede llenar los campos con número separados por comas de este tipo: 12530,23543 y tal ¿no?

Pues bien tengo esta función q me lo realiza perfectamente para un campo (sacada de esta misma página en el foro de ASP , muchísimas gracias a u_goldman por ello):

function valida()
{
error=0;
msg="";
charValidos= "0123456789,";
var x;

for(x=0; x<document.form1.pueblo.value.length; x++)
{
if(charValidos.indexOf(document.form1.pueblo.value .charAt(x))==-1)
{
error=1;
msg= msg + "\nSolo se permiten valores numéricos separados por comas.\nSi no sabe el código utilize el botón de búsqueda";
break;
}
}
if(error!=0)
{alert(msg);}
}

Pero me gustaría poder meter un for para q me lo hiciera para todos los campos. Lo he intentado, y lo q he conseguido es q me saque el mensaje 7 veces (q es el numero de campos q tiene el formulario) aunq sólo rellene uno o dos.

¿Alguna sugerencia? o... ¡Debería hacer una función parecida para cada campo?

Gracias, hasta pronto.
  #2 (permalink)  
Antiguo 29/07/2003, 10:40
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
Prueba con esto. Ten en cuenta que he contado que los 7 campos son desde el 1 al 7 del formulario
si los campos son otros (del 8 al 15) debes cambiar los valores del for que te he puesto.

Un saludo!

Código PHP:
function valida()
{

error=0;
msg="";
charValidos"0123456789,";
var 
x;
for (
a=0;a<7;a++){
for(
x=0x<document.form1.elements[a].value.lengthx++)
{
if(
charValidos.indexOf(document.form1.elements[a].value.charAt(x))==-1)
{
error=1;
msgmsg "\nSolo se permiten valores numéricos separados por comas.\nSi no sabe el código utilize el botón de búsqueda";
break; 
}
}}
if(
error!=0)
{
alert(msg);}

__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 29/07/2003, 10:41
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 3 meses
Puntos: 38
Hola tom2000.

Te pido que le des un vistazo al FAQ-15, porque creo que se adapta a lo que necesitas.

Saludos.
  #4 (permalink)  
Antiguo 29/07/2003, 10:42
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
Hola KAO!!!!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 29/07/2003, 10:43
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 3 meses
Puntos: 38
Ooopss!!!

Me temo que me tardé tecleando...yo no dispongo de ocho teclados independientes y un cerebro por tentáculo como otros...

Saludos.

(Hola Karlan)
  #6 (permalink)  
Antiguo 29/07/2003, 10:53
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 yo nomás ví que había reunión y entré a saludar
  #7 (permalink)  
Antiguo 29/07/2003, 13: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
Uniendo dos posts que estaban duplicados en este foro (el duplicado estaba inicialmente en el foro de asp pero fue trasladado) algo ha ido mal y el post que debiera haberse unido a este se ha unido con otro post de hace más de un año.

A pesar de haber seguido el procedimiento de siempre me he encontrado con este desastre. He de pensar que algo hice mal (soy una manazas, debe ser eso) aunque sigo sin comprender de dónde sacó la idea el sistema de unirlo con ese post antiguo en vez de con el que lo debía de haber unido

Hasta el momento mis esfuerzos por separarlos han sido en vano.

De momento dejo enlace al post con el que debiera haberse unido y no me atrevo a tratar de unirlos de nuevo (no vaya a liarla aún más)

http://www.forosdelweb.com/s/msg144673.html

tom2000, te envié un mensaje privado advirtiéndote de lo sucedido.

saludos y mis disculpas.
  #8 (permalink)  
Antiguo 30/07/2003, 01:13
 
Fecha de Ingreso: julio-2003
Mensajes: 164
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias a tod@s por vuestras respuestas.

Pues bien, he hecho lo q ha dicho Karlankas, pero lo q pasa q en la ventana q tiene q salir me repite el mensaje 4 veces si relleno algún campo y 3 veces si le doy al submit sin rellenar ningún campo. Además, pase lo q pase, siempre acaba enviando el formulario.

¿Alguna sugerencia?
  #9 (permalink)  
Antiguo 30/07/2003, 01:48
 
Fecha de Ingreso: julio-2003
Mensajes: 164
Antigüedad: 20 años, 9 meses
Puntos: 0
La cosa parece complicada, le estoy dando vueltas y no encuentro la solución por lo q he pensado q cuando se cargue la página le salga un mensaje diciendole la forma de rellenar los campos, pero he puesto esto: y no me funciona ¿Qué hay mal?

<script language="JavaScript">
function funcion{
msg = "";
msg = msg + "\nUtilize los botones de búsqueda para saber lso diferentes códigos, menos en el nombre";
alert(msg);
}
</script>

<body onLoad="javascript:funcion();">

Gracias, hasta pronto.
  #10 (permalink)  
Antiguo 31/07/2003, 01:58
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
Hola Tom!

A ver, creo que funciona, también he puesto que si encuentra
que están todos vacíos te diga que debes llenar al menos uno
(como veo que has preguntado en otro post).

Permíteme decirte que debes poner todas las preguntas sobre
un mismo código juntas para no volver loca a la gente y optimizar
el código que te sugieran.

Dime si te va!


Código PHP:
<html>
<
head><script>
charValidos"0123456789,";
var 
x;
function 
validar()
{
error=0;
relleno=0;
msg="";

for (
a=0;a<7;a++){
if(
document.forms[0].elements[a].value!=""){relleno=1;}
for(
x=0x<document.forms[0].elements[a].value.lengthx++)
{
if(
charValidos.indexOf(document.forms[0].elements[a].value.charAt(x))==-1)
{
error=1;
msgmsg "\nEn el campo"document.forms[0].elements[a].name+" solo se permiten valores numéricos separados por comas.\nSi no sabe el código utilize el botón de búsqueda.\n";
break; 
}
}}
if (
relleno!=1){
error=1;
msg+="\nAl menos debe rellenar un campo";}
if(
error!=0)
{
alert(msg);return false;}
else{
document.form1.submit();}
}
</script>
</head>

<body>
<form name="form1" action="javascript:alert('enviando!!')">
<input type="text"
       name="poblacion1"><br>
       
<input type="text"
       name="poblacion2"><br>
<input type="text"
       name="poblacion3"><br>
<input type="text"
       name="poblacion4"><br>
<input type="text"
       name="poblacion5"><br>
<input type="text"
       name="poblacion6"><br>
<input type="text"
       name="poblacion7"><br>
       <input type="button"value="enviar"onclick="validar()">

</form>


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

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 31/07/2003 a las 02:08
  #11 (permalink)  
Antiguo 31/07/2003, 10:40
 
Fecha de Ingreso: julio-2003
Mensajes: 164
Antigüedad: 20 años, 9 meses
Puntos: 0
Vale, de acuerdo, muchas gracias, pero...

El tema es másc omplicado de lo q parece, y es que en el formulario, no sólo tengo las cajas de texto, hay cajasd e texto, q a su lado tienen su respectivo botón de búsqueda, entonces la función q me has enseñado no funciona como debe.

¿Si saco esos botones fuera del form ira bien?
Gracias, hasta pronto
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:31.